@burdenoff/microfe-planmagnet 2026.1008.1 → 2026.1008.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1970) hide show
  1. package/dist/_virtual/__vite-browser-external.js +0 -2
  2. package/dist/components/MarkdownEditor.js +0 -2
  3. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +0 -2
  4. package/dist/node_modules/@apollo/client/errors/ServerError.js +0 -2
  5. package/dist/node_modules/@apollo/client/errors/utils.js +0 -2
  6. package/dist/node_modules/clsx/dist/clsx.js +0 -2
  7. package/dist/node_modules/d3-array/src/ascending.js +0 -2
  8. package/dist/node_modules/d3-array/src/bisect.js +0 -2
  9. package/dist/node_modules/d3-array/src/bisector.js +0 -2
  10. package/dist/node_modules/d3-array/src/descending.js +0 -2
  11. package/dist/node_modules/d3-array/src/max.js +0 -2
  12. package/dist/node_modules/d3-array/src/min.js +0 -2
  13. package/dist/node_modules/d3-array/src/number.js +0 -2
  14. package/dist/node_modules/d3-array/src/quantile.js +0 -2
  15. package/dist/node_modules/d3-array/src/quickselect.js +0 -2
  16. package/dist/node_modules/d3-array/src/range.js +0 -2
  17. package/dist/node_modules/d3-array/src/sort.js +0 -2
  18. package/dist/node_modules/d3-array/src/ticks.js +0 -2
  19. package/dist/node_modules/d3-color/src/color.js +0 -2
  20. package/dist/node_modules/d3-color/src/define.js +0 -2
  21. package/dist/node_modules/d3-format/src/defaultLocale.js +0 -2
  22. package/dist/node_modules/d3-format/src/exponent.js +0 -2
  23. package/dist/node_modules/d3-format/src/formatDecimal.js +0 -2
  24. package/dist/node_modules/d3-format/src/formatGroup.js +0 -2
  25. package/dist/node_modules/d3-format/src/formatNumerals.js +0 -2
  26. package/dist/node_modules/d3-format/src/formatPrefixAuto.js +0 -2
  27. package/dist/node_modules/d3-format/src/formatRounded.js +0 -2
  28. package/dist/node_modules/d3-format/src/formatSpecifier.js +0 -2
  29. package/dist/node_modules/d3-format/src/formatTrim.js +0 -2
  30. package/dist/node_modules/d3-format/src/formatTypes.js +0 -2
  31. package/dist/node_modules/d3-format/src/identity.js +0 -2
  32. package/dist/node_modules/d3-format/src/locale.js +0 -2
  33. package/dist/node_modules/d3-format/src/precisionFixed.js +0 -2
  34. package/dist/node_modules/d3-format/src/precisionPrefix.js +0 -2
  35. package/dist/node_modules/d3-format/src/precisionRound.js +0 -2
  36. package/dist/node_modules/d3-interpolate/src/array.js +0 -2
  37. package/dist/node_modules/d3-interpolate/src/basis.js +0 -2
  38. package/dist/node_modules/d3-interpolate/src/basisClosed.js +0 -2
  39. package/dist/node_modules/d3-interpolate/src/color.js +0 -2
  40. package/dist/node_modules/d3-interpolate/src/constant.js +0 -2
  41. package/dist/node_modules/d3-interpolate/src/date.js +0 -2
  42. package/dist/node_modules/d3-interpolate/src/number.js +0 -2
  43. package/dist/node_modules/d3-interpolate/src/numberArray.js +0 -2
  44. package/dist/node_modules/d3-interpolate/src/object.js +0 -2
  45. package/dist/node_modules/d3-interpolate/src/piecewise.js +0 -2
  46. package/dist/node_modules/d3-interpolate/src/rgb.js +0 -2
  47. package/dist/node_modules/d3-interpolate/src/round.js +0 -2
  48. package/dist/node_modules/d3-interpolate/src/string.js +0 -2
  49. package/dist/node_modules/d3-interpolate/src/value.js +0 -2
  50. package/dist/node_modules/d3-path/src/path.js +0 -2
  51. package/dist/node_modules/d3-scale/src/band.js +0 -2
  52. package/dist/node_modules/d3-scale/src/constant.js +0 -2
  53. package/dist/node_modules/d3-scale/src/continuous.js +0 -2
  54. package/dist/node_modules/d3-scale/src/diverging.js +0 -2
  55. package/dist/node_modules/d3-scale/src/identity.js +0 -2
  56. package/dist/node_modules/d3-scale/src/init.js +0 -2
  57. package/dist/node_modules/d3-scale/src/linear.js +0 -2
  58. package/dist/node_modules/d3-scale/src/log.js +0 -2
  59. package/dist/node_modules/d3-scale/src/nice.js +0 -2
  60. package/dist/node_modules/d3-scale/src/number.js +0 -2
  61. package/dist/node_modules/d3-scale/src/ordinal.js +0 -2
  62. package/dist/node_modules/d3-scale/src/pow.js +0 -2
  63. package/dist/node_modules/d3-scale/src/quantile.js +0 -2
  64. package/dist/node_modules/d3-scale/src/quantize.js +0 -2
  65. package/dist/node_modules/d3-scale/src/radial.js +0 -2
  66. package/dist/node_modules/d3-scale/src/sequential.js +0 -2
  67. package/dist/node_modules/d3-scale/src/sequentialQuantile.js +0 -2
  68. package/dist/node_modules/d3-scale/src/symlog.js +0 -2
  69. package/dist/node_modules/d3-scale/src/threshold.js +0 -2
  70. package/dist/node_modules/d3-scale/src/tickFormat.js +0 -2
  71. package/dist/node_modules/d3-scale/src/time.js +0 -2
  72. package/dist/node_modules/d3-scale/src/utcTime.js +0 -2
  73. package/dist/node_modules/d3-shape/src/area.js +0 -2
  74. package/dist/node_modules/d3-shape/src/array.js +0 -2
  75. package/dist/node_modules/d3-shape/src/constant.js +0 -2
  76. package/dist/node_modules/d3-shape/src/curve/basis.js +0 -2
  77. package/dist/node_modules/d3-shape/src/curve/basisClosed.js +0 -2
  78. package/dist/node_modules/d3-shape/src/curve/basisOpen.js +0 -2
  79. package/dist/node_modules/d3-shape/src/curve/bump.js +0 -2
  80. package/dist/node_modules/d3-shape/src/curve/linear.js +0 -2
  81. package/dist/node_modules/d3-shape/src/curve/linearClosed.js +0 -2
  82. package/dist/node_modules/d3-shape/src/curve/monotone.js +0 -2
  83. package/dist/node_modules/d3-shape/src/curve/natural.js +0 -2
  84. package/dist/node_modules/d3-shape/src/curve/step.js +0 -2
  85. package/dist/node_modules/d3-shape/src/line.js +0 -2
  86. package/dist/node_modules/d3-shape/src/math.js +0 -2
  87. package/dist/node_modules/d3-shape/src/noop.js +0 -2
  88. package/dist/node_modules/d3-shape/src/offset/expand.js +0 -2
  89. package/dist/node_modules/d3-shape/src/offset/none.js +0 -2
  90. package/dist/node_modules/d3-shape/src/offset/silhouette.js +0 -2
  91. package/dist/node_modules/d3-shape/src/offset/wiggle.js +0 -2
  92. package/dist/node_modules/d3-shape/src/order/none.js +0 -2
  93. package/dist/node_modules/d3-shape/src/path.js +0 -2
  94. package/dist/node_modules/d3-shape/src/point.js +0 -2
  95. package/dist/node_modules/d3-shape/src/stack.js +0 -2
  96. package/dist/node_modules/d3-shape/src/symbol/circle.js +0 -2
  97. package/dist/node_modules/d3-shape/src/symbol/cross.js +0 -2
  98. package/dist/node_modules/d3-shape/src/symbol/diamond.js +0 -2
  99. package/dist/node_modules/d3-shape/src/symbol/square.js +0 -2
  100. package/dist/node_modules/d3-shape/src/symbol/star.js +0 -2
  101. package/dist/node_modules/d3-shape/src/symbol/triangle.js +0 -2
  102. package/dist/node_modules/d3-shape/src/symbol/wye.js +0 -2
  103. package/dist/node_modules/d3-shape/src/symbol.js +0 -2
  104. package/dist/node_modules/d3-time/src/day.js +0 -2
  105. package/dist/node_modules/d3-time/src/duration.js +0 -2
  106. package/dist/node_modules/d3-time/src/hour.js +0 -2
  107. package/dist/node_modules/d3-time/src/interval.js +0 -2
  108. package/dist/node_modules/d3-time/src/millisecond.js +0 -2
  109. package/dist/node_modules/d3-time/src/minute.js +0 -2
  110. package/dist/node_modules/d3-time/src/month.js +0 -2
  111. package/dist/node_modules/d3-time/src/second.js +0 -2
  112. package/dist/node_modules/d3-time/src/ticks.js +0 -2
  113. package/dist/node_modules/d3-time/src/week.js +0 -2
  114. package/dist/node_modules/d3-time/src/year.js +0 -2
  115. package/dist/node_modules/d3-time-format/src/defaultLocale.js +0 -2
  116. package/dist/node_modules/d3-time-format/src/locale.js +0 -2
  117. package/dist/node_modules/decimal.js-light/decimal.js +0 -2
  118. package/dist/node_modules/eventemitter3/index.js +0 -2
  119. package/dist/node_modules/fast-equals/dist/es/index.js +0 -2
  120. package/dist/node_modules/fflate/esm/browser.js +0 -2
  121. package/dist/node_modules/internmap/src/index.js +0 -2
  122. package/dist/node_modules/jszip/dist/jszip.min.js +0 -2
  123. package/dist/node_modules/lodash/_DataView.js +0 -2
  124. package/dist/node_modules/lodash/_Hash.js +0 -2
  125. package/dist/node_modules/lodash/_ListCache.js +0 -2
  126. package/dist/node_modules/lodash/_Map.js +0 -2
  127. package/dist/node_modules/lodash/_MapCache.js +0 -2
  128. package/dist/node_modules/lodash/_Promise.js +0 -2
  129. package/dist/node_modules/lodash/_Set.js +0 -2
  130. package/dist/node_modules/lodash/_SetCache.js +0 -2
  131. package/dist/node_modules/lodash/_Stack.js +0 -2
  132. package/dist/node_modules/lodash/_Symbol.js +0 -2
  133. package/dist/node_modules/lodash/_Uint8Array.js +0 -2
  134. package/dist/node_modules/lodash/_WeakMap.js +0 -2
  135. package/dist/node_modules/lodash/_apply.js +0 -2
  136. package/dist/node_modules/lodash/_arrayEach.js +0 -2
  137. package/dist/node_modules/lodash/_arrayEvery.js +0 -2
  138. package/dist/node_modules/lodash/_arrayFilter.js +0 -2
  139. package/dist/node_modules/lodash/_arrayIncludes.js +0 -2
  140. package/dist/node_modules/lodash/_arrayIncludesWith.js +0 -2
  141. package/dist/node_modules/lodash/_arrayLikeKeys.js +0 -2
  142. package/dist/node_modules/lodash/_arrayMap.js +0 -2
  143. package/dist/node_modules/lodash/_arrayPush.js +0 -2
  144. package/dist/node_modules/lodash/_arraySome.js +0 -2
  145. package/dist/node_modules/lodash/_asciiToArray.js +0 -2
  146. package/dist/node_modules/lodash/_assignValue.js +0 -2
  147. package/dist/node_modules/lodash/_assocIndexOf.js +0 -2
  148. package/dist/node_modules/lodash/_baseAssign.js +0 -2
  149. package/dist/node_modules/lodash/_baseAssignIn.js +0 -2
  150. package/dist/node_modules/lodash/_baseAssignValue.js +0 -2
  151. package/dist/node_modules/lodash/_baseClone.js +0 -2
  152. package/dist/node_modules/lodash/_baseCreate.js +0 -2
  153. package/dist/node_modules/lodash/_baseEach.js +0 -2
  154. package/dist/node_modules/lodash/_baseEvery.js +0 -2
  155. package/dist/node_modules/lodash/_baseExtremum.js +0 -2
  156. package/dist/node_modules/lodash/_baseFindIndex.js +0 -2
  157. package/dist/node_modules/lodash/_baseFlatten.js +0 -2
  158. package/dist/node_modules/lodash/_baseFor.js +0 -2
  159. package/dist/node_modules/lodash/_baseForOwn.js +0 -2
  160. package/dist/node_modules/lodash/_baseGet.js +0 -2
  161. package/dist/node_modules/lodash/_baseGetAllKeys.js +0 -2
  162. package/dist/node_modules/lodash/_baseGetTag.js +0 -2
  163. package/dist/node_modules/lodash/_baseGt.js +0 -2
  164. package/dist/node_modules/lodash/_baseHasIn.js +0 -2
  165. package/dist/node_modules/lodash/_baseIndexOf.js +0 -2
  166. package/dist/node_modules/lodash/_baseIsArguments.js +0 -2
  167. package/dist/node_modules/lodash/_baseIsEqual.js +0 -2
  168. package/dist/node_modules/lodash/_baseIsEqualDeep.js +0 -2
  169. package/dist/node_modules/lodash/_baseIsMap.js +0 -2
  170. package/dist/node_modules/lodash/_baseIsMatch.js +0 -2
  171. package/dist/node_modules/lodash/_baseIsNaN.js +0 -2
  172. package/dist/node_modules/lodash/_baseIsNative.js +0 -2
  173. package/dist/node_modules/lodash/_baseIsSet.js +0 -2
  174. package/dist/node_modules/lodash/_baseIsTypedArray.js +0 -2
  175. package/dist/node_modules/lodash/_baseIteratee.js +0 -2
  176. package/dist/node_modules/lodash/_baseKeys.js +0 -2
  177. package/dist/node_modules/lodash/_baseKeysIn.js +0 -2
  178. package/dist/node_modules/lodash/_baseLt.js +0 -2
  179. package/dist/node_modules/lodash/_baseMap.js +0 -2
  180. package/dist/node_modules/lodash/_baseMatches.js +0 -2
  181. package/dist/node_modules/lodash/_baseMatchesProperty.js +0 -2
  182. package/dist/node_modules/lodash/_baseOrderBy.js +0 -2
  183. package/dist/node_modules/lodash/_baseProperty.js +0 -2
  184. package/dist/node_modules/lodash/_basePropertyDeep.js +0 -2
  185. package/dist/node_modules/lodash/_baseRange.js +0 -2
  186. package/dist/node_modules/lodash/_baseRest.js +0 -2
  187. package/dist/node_modules/lodash/_baseSetToString.js +0 -2
  188. package/dist/node_modules/lodash/_baseSlice.js +0 -2
  189. package/dist/node_modules/lodash/_baseSome.js +0 -2
  190. package/dist/node_modules/lodash/_baseSortBy.js +0 -2
  191. package/dist/node_modules/lodash/_baseSum.js +0 -2
  192. package/dist/node_modules/lodash/_baseTimes.js +0 -2
  193. package/dist/node_modules/lodash/_baseToString.js +0 -2
  194. package/dist/node_modules/lodash/_baseTrim.js +0 -2
  195. package/dist/node_modules/lodash/_baseUnary.js +0 -2
  196. package/dist/node_modules/lodash/_baseUniq.js +0 -2
  197. package/dist/node_modules/lodash/_baseUnset.js +0 -2
  198. package/dist/node_modules/lodash/_cacheHas.js +0 -2
  199. package/dist/node_modules/lodash/_castPath.js +0 -2
  200. package/dist/node_modules/lodash/_castSlice.js +0 -2
  201. package/dist/node_modules/lodash/_cloneArrayBuffer.js +0 -2
  202. package/dist/node_modules/lodash/_cloneBuffer.js +0 -2
  203. package/dist/node_modules/lodash/_cloneDataView.js +0 -2
  204. package/dist/node_modules/lodash/_cloneRegExp.js +0 -2
  205. package/dist/node_modules/lodash/_cloneSymbol.js +0 -2
  206. package/dist/node_modules/lodash/_cloneTypedArray.js +0 -2
  207. package/dist/node_modules/lodash/_compareAscending.js +0 -2
  208. package/dist/node_modules/lodash/_compareMultiple.js +0 -2
  209. package/dist/node_modules/lodash/_copyArray.js +0 -2
  210. package/dist/node_modules/lodash/_copyObject.js +0 -2
  211. package/dist/node_modules/lodash/_copySymbols.js +0 -2
  212. package/dist/node_modules/lodash/_copySymbolsIn.js +0 -2
  213. package/dist/node_modules/lodash/_coreJsData.js +0 -2
  214. package/dist/node_modules/lodash/_createBaseEach.js +0 -2
  215. package/dist/node_modules/lodash/_createBaseFor.js +0 -2
  216. package/dist/node_modules/lodash/_createCaseFirst.js +0 -2
  217. package/dist/node_modules/lodash/_createFind.js +0 -2
  218. package/dist/node_modules/lodash/_createRange.js +0 -2
  219. package/dist/node_modules/lodash/_createSet.js +0 -2
  220. package/dist/node_modules/lodash/_customOmitClone.js +0 -2
  221. package/dist/node_modules/lodash/_defineProperty.js +0 -2
  222. package/dist/node_modules/lodash/_equalArrays.js +0 -2
  223. package/dist/node_modules/lodash/_equalByTag.js +0 -2
  224. package/dist/node_modules/lodash/_equalObjects.js +0 -2
  225. package/dist/node_modules/lodash/_flatRest.js +0 -2
  226. package/dist/node_modules/lodash/_freeGlobal.js +0 -2
  227. package/dist/node_modules/lodash/_getAllKeys.js +0 -2
  228. package/dist/node_modules/lodash/_getAllKeysIn.js +0 -2
  229. package/dist/node_modules/lodash/_getMapData.js +0 -2
  230. package/dist/node_modules/lodash/_getMatchData.js +0 -2
  231. package/dist/node_modules/lodash/_getNative.js +0 -2
  232. package/dist/node_modules/lodash/_getPrototype.js +0 -2
  233. package/dist/node_modules/lodash/_getRawTag.js +0 -2
  234. package/dist/node_modules/lodash/_getSymbols.js +0 -2
  235. package/dist/node_modules/lodash/_getSymbolsIn.js +0 -2
  236. package/dist/node_modules/lodash/_getTag.js +0 -2
  237. package/dist/node_modules/lodash/_getValue.js +0 -2
  238. package/dist/node_modules/lodash/_hasPath.js +0 -2
  239. package/dist/node_modules/lodash/_hasUnicode.js +0 -2
  240. package/dist/node_modules/lodash/_hashClear.js +0 -2
  241. package/dist/node_modules/lodash/_hashDelete.js +0 -2
  242. package/dist/node_modules/lodash/_hashGet.js +0 -2
  243. package/dist/node_modules/lodash/_hashHas.js +0 -2
  244. package/dist/node_modules/lodash/_hashSet.js +0 -2
  245. package/dist/node_modules/lodash/_initCloneArray.js +0 -2
  246. package/dist/node_modules/lodash/_initCloneByTag.js +0 -2
  247. package/dist/node_modules/lodash/_initCloneObject.js +0 -2
  248. package/dist/node_modules/lodash/_isFlattenable.js +0 -2
  249. package/dist/node_modules/lodash/_isIndex.js +0 -2
  250. package/dist/node_modules/lodash/_isIterateeCall.js +0 -2
  251. package/dist/node_modules/lodash/_isKey.js +0 -2
  252. package/dist/node_modules/lodash/_isKeyable.js +0 -2
  253. package/dist/node_modules/lodash/_isMasked.js +0 -2
  254. package/dist/node_modules/lodash/_isPrototype.js +0 -2
  255. package/dist/node_modules/lodash/_isStrictComparable.js +0 -2
  256. package/dist/node_modules/lodash/_listCacheClear.js +0 -2
  257. package/dist/node_modules/lodash/_listCacheDelete.js +0 -2
  258. package/dist/node_modules/lodash/_listCacheGet.js +0 -2
  259. package/dist/node_modules/lodash/_listCacheHas.js +0 -2
  260. package/dist/node_modules/lodash/_listCacheSet.js +0 -2
  261. package/dist/node_modules/lodash/_mapCacheClear.js +0 -2
  262. package/dist/node_modules/lodash/_mapCacheDelete.js +0 -2
  263. package/dist/node_modules/lodash/_mapCacheGet.js +0 -2
  264. package/dist/node_modules/lodash/_mapCacheHas.js +0 -2
  265. package/dist/node_modules/lodash/_mapCacheSet.js +0 -2
  266. package/dist/node_modules/lodash/_mapToArray.js +0 -2
  267. package/dist/node_modules/lodash/_matchesStrictComparable.js +0 -2
  268. package/dist/node_modules/lodash/_memoizeCapped.js +0 -2
  269. package/dist/node_modules/lodash/_nativeCreate.js +0 -2
  270. package/dist/node_modules/lodash/_nativeKeys.js +0 -2
  271. package/dist/node_modules/lodash/_nativeKeysIn.js +0 -2
  272. package/dist/node_modules/lodash/_nodeUtil.js +0 -2
  273. package/dist/node_modules/lodash/_objectToString.js +0 -2
  274. package/dist/node_modules/lodash/_overArg.js +0 -2
  275. package/dist/node_modules/lodash/_overRest.js +0 -2
  276. package/dist/node_modules/lodash/_parent.js +0 -2
  277. package/dist/node_modules/lodash/_root.js +0 -2
  278. package/dist/node_modules/lodash/_setCacheAdd.js +0 -2
  279. package/dist/node_modules/lodash/_setCacheHas.js +0 -2
  280. package/dist/node_modules/lodash/_setToArray.js +0 -2
  281. package/dist/node_modules/lodash/_setToString.js +0 -2
  282. package/dist/node_modules/lodash/_shortOut.js +0 -2
  283. package/dist/node_modules/lodash/_stackClear.js +0 -2
  284. package/dist/node_modules/lodash/_stackDelete.js +0 -2
  285. package/dist/node_modules/lodash/_stackGet.js +0 -2
  286. package/dist/node_modules/lodash/_stackHas.js +0 -2
  287. package/dist/node_modules/lodash/_stackSet.js +0 -2
  288. package/dist/node_modules/lodash/_strictIndexOf.js +0 -2
  289. package/dist/node_modules/lodash/_stringToArray.js +0 -2
  290. package/dist/node_modules/lodash/_stringToPath.js +0 -2
  291. package/dist/node_modules/lodash/_toKey.js +0 -2
  292. package/dist/node_modules/lodash/_toSource.js +0 -2
  293. package/dist/node_modules/lodash/_trimmedEndIndex.js +0 -2
  294. package/dist/node_modules/lodash/_unicodeToArray.js +0 -2
  295. package/dist/node_modules/lodash/constant.js +0 -2
  296. package/dist/node_modules/lodash/debounce.js +0 -2
  297. package/dist/node_modules/lodash/eq.js +0 -2
  298. package/dist/node_modules/lodash/every.js +0 -2
  299. package/dist/node_modules/lodash/find.js +0 -2
  300. package/dist/node_modules/lodash/findIndex.js +0 -2
  301. package/dist/node_modules/lodash/flatMap.js +0 -2
  302. package/dist/node_modules/lodash/flatten.js +0 -2
  303. package/dist/node_modules/lodash/get.js +0 -2
  304. package/dist/node_modules/lodash/hasIn.js +0 -2
  305. package/dist/node_modules/lodash/identity.js +0 -2
  306. package/dist/node_modules/lodash/isArguments.js +0 -2
  307. package/dist/node_modules/lodash/isArray.js +0 -2
  308. package/dist/node_modules/lodash/isArrayLike.js +0 -2
  309. package/dist/node_modules/lodash/isBoolean.js +0 -2
  310. package/dist/node_modules/lodash/isBuffer.js +0 -2
  311. package/dist/node_modules/lodash/isEqual.js +0 -2
  312. package/dist/node_modules/lodash/isFunction.js +0 -2
  313. package/dist/node_modules/lodash/isLength.js +0 -2
  314. package/dist/node_modules/lodash/isMap.js +0 -2
  315. package/dist/node_modules/lodash/isNaN.js +0 -2
  316. package/dist/node_modules/lodash/isNil.js +0 -2
  317. package/dist/node_modules/lodash/isNumber.js +0 -2
  318. package/dist/node_modules/lodash/isObject.js +0 -2
  319. package/dist/node_modules/lodash/isObjectLike.js +0 -2
  320. package/dist/node_modules/lodash/isPlainObject.js +0 -2
  321. package/dist/node_modules/lodash/isSet.js +0 -2
  322. package/dist/node_modules/lodash/isString.js +0 -2
  323. package/dist/node_modules/lodash/isSymbol.js +0 -2
  324. package/dist/node_modules/lodash/isTypedArray.js +0 -2
  325. package/dist/node_modules/lodash/keys.js +0 -2
  326. package/dist/node_modules/lodash/keysIn.js +0 -2
  327. package/dist/node_modules/lodash/last.js +0 -2
  328. package/dist/node_modules/lodash/map.js +0 -2
  329. package/dist/node_modules/lodash/mapValues.js +0 -2
  330. package/dist/node_modules/lodash/max.js +0 -2
  331. package/dist/node_modules/lodash/maxBy.js +0 -2
  332. package/dist/node_modules/lodash/memoize.js +0 -2
  333. package/dist/node_modules/lodash/min.js +0 -2
  334. package/dist/node_modules/lodash/noop.js +0 -2
  335. package/dist/node_modules/lodash/now.js +0 -2
  336. package/dist/node_modules/lodash/omit.js +0 -2
  337. package/dist/node_modules/lodash/property.js +0 -2
  338. package/dist/node_modules/lodash/range.js +0 -2
  339. package/dist/node_modules/lodash/some.js +0 -2
  340. package/dist/node_modules/lodash/sortBy.js +0 -2
  341. package/dist/node_modules/lodash/stubArray.js +0 -2
  342. package/dist/node_modules/lodash/stubFalse.js +0 -2
  343. package/dist/node_modules/lodash/sumBy.js +0 -2
  344. package/dist/node_modules/lodash/throttle.js +0 -2
  345. package/dist/node_modules/lodash/toFinite.js +0 -2
  346. package/dist/node_modules/lodash/toInteger.js +0 -2
  347. package/dist/node_modules/lodash/toNumber.js +0 -2
  348. package/dist/node_modules/lodash/toString.js +0 -2
  349. package/dist/node_modules/lodash/uniqBy.js +0 -2
  350. package/dist/node_modules/lodash/upperFirst.js +0 -2
  351. package/dist/node_modules/object-assign/index.js +0 -2
  352. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js +0 -2
  353. package/dist/node_modules/prop-types/checkPropTypes.js +0 -2
  354. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -2
  355. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -2
  356. package/dist/node_modules/prop-types/index.js +0 -2
  357. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -2
  358. package/dist/node_modules/prop-types/lib/has.js +0 -2
  359. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +0 -2
  360. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  361. package/dist/node_modules/prop-types/node_modules/react-is/index.js +0 -2
  362. package/dist/node_modules/react-is/cjs/react-is.development.js +0 -2
  363. package/dist/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  364. package/dist/node_modules/react-is/index.js +0 -2
  365. package/dist/node_modules/react-smooth/es6/Animate.js +0 -2
  366. package/dist/node_modules/react-smooth/es6/AnimateManager.js +0 -2
  367. package/dist/node_modules/react-smooth/es6/configUpdate.js +0 -2
  368. package/dist/node_modules/react-smooth/es6/easing.js +0 -2
  369. package/dist/node_modules/react-smooth/es6/index.js +0 -2
  370. package/dist/node_modules/react-smooth/es6/setRafTimeout.js +0 -2
  371. package/dist/node_modules/react-smooth/es6/util.js +0 -2
  372. package/dist/node_modules/recharts/es6/cartesian/Area.js +0 -2
  373. package/dist/node_modules/recharts/es6/cartesian/Bar.js +0 -2
  374. package/dist/node_modules/recharts/es6/cartesian/Brush.js +0 -2
  375. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +0 -2
  376. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +0 -2
  377. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +0 -2
  378. package/dist/node_modules/recharts/es6/cartesian/Line.js +0 -2
  379. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +0 -2
  380. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +0 -2
  381. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +0 -2
  382. package/dist/node_modules/recharts/es6/cartesian/XAxis.js +0 -2
  383. package/dist/node_modules/recharts/es6/cartesian/YAxis.js +0 -2
  384. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +0 -2
  385. package/dist/node_modules/recharts/es6/cartesian/getTicks.js +0 -2
  386. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +0 -2
  387. package/dist/node_modules/recharts/es6/chart/AreaChart.js +0 -2
  388. package/dist/node_modules/recharts/es6/chart/BarChart.js +0 -2
  389. package/dist/node_modules/recharts/es6/chart/LineChart.js +0 -2
  390. package/dist/node_modules/recharts/es6/chart/Sankey.js +0 -2
  391. package/dist/node_modules/recharts/es6/chart/Treemap.js +0 -2
  392. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +0 -2
  393. package/dist/node_modules/recharts/es6/component/Cell.js +0 -2
  394. package/dist/node_modules/recharts/es6/component/Cursor.js +0 -2
  395. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +0 -2
  396. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +0 -2
  397. package/dist/node_modules/recharts/es6/component/Label.js +0 -2
  398. package/dist/node_modules/recharts/es6/component/LabelList.js +0 -2
  399. package/dist/node_modules/recharts/es6/component/Legend.js +0 -2
  400. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +0 -2
  401. package/dist/node_modules/recharts/es6/component/Text.js +0 -2
  402. package/dist/node_modules/recharts/es6/component/Tooltip.js +0 -2
  403. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +0 -2
  404. package/dist/node_modules/recharts/es6/container/Layer.js +0 -2
  405. package/dist/node_modules/recharts/es6/container/Surface.js +0 -2
  406. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +0 -2
  407. package/dist/node_modules/recharts/es6/shape/Cross.js +0 -2
  408. package/dist/node_modules/recharts/es6/shape/Curve.js +0 -2
  409. package/dist/node_modules/recharts/es6/shape/Dot.js +0 -2
  410. package/dist/node_modules/recharts/es6/shape/Polygon.js +0 -2
  411. package/dist/node_modules/recharts/es6/shape/Rectangle.js +0 -2
  412. package/dist/node_modules/recharts/es6/shape/Sector.js +0 -2
  413. package/dist/node_modules/recharts/es6/shape/Symbols.js +0 -2
  414. package/dist/node_modules/recharts/es6/shape/Trapezoid.js +0 -2
  415. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +0 -2
  416. package/dist/node_modules/recharts/es6/util/BarUtils.js +0 -2
  417. package/dist/node_modules/recharts/es6/util/CartesianUtils.js +0 -2
  418. package/dist/node_modules/recharts/es6/util/ChartUtils.js +0 -2
  419. package/dist/node_modules/recharts/es6/util/Constants.js +0 -2
  420. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +0 -2
  421. package/dist/node_modules/recharts/es6/util/DOMUtils.js +0 -2
  422. package/dist/node_modules/recharts/es6/util/DataUtils.js +0 -2
  423. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +0 -2
  424. package/dist/node_modules/recharts/es6/util/Events.js +0 -2
  425. package/dist/node_modules/recharts/es6/util/Global.js +0 -2
  426. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +0 -2
  427. package/dist/node_modules/recharts/es6/util/LogUtils.js +0 -2
  428. package/dist/node_modules/recharts/es6/util/PolarUtils.js +0 -2
  429. package/dist/node_modules/recharts/es6/util/ReactUtils.js +0 -2
  430. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +0 -2
  431. package/dist/node_modules/recharts/es6/util/ShallowEqual.js +0 -2
  432. package/dist/node_modules/recharts/es6/util/TickUtils.js +0 -2
  433. package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -2
  434. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +0 -2
  435. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +0 -2
  436. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +0 -2
  437. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +0 -2
  438. package/dist/node_modules/recharts/es6/util/getLegendProps.js +0 -2
  439. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +0 -2
  440. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +0 -2
  441. package/dist/node_modules/recharts/es6/util/tooltip/translate.js +0 -2
  442. package/dist/node_modules/recharts/es6/util/types.js +0 -2
  443. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +0 -2
  444. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +0 -2
  445. package/dist/node_modules/recharts-scale/es6/util/utils.js +0 -2
  446. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2
  447. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +0 -2
  448. package/dist/node_modules/victory-vendor/es/d3-scale.js +0 -2
  449. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js +0 -2
  450. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js +0 -2
  451. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js +0 -2
  452. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js +0 -2
  453. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js +0 -2
  454. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js +0 -2
  455. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js +0 -2
  456. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js +0 -2
  457. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js +0 -2
  458. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js +0 -2
  459. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js +0 -2
  460. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js +0 -2
  461. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js +0 -2
  462. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js +0 -2
  463. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js +0 -2
  464. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js +0 -2
  465. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js +0 -2
  466. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js +0 -2
  467. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js +0 -2
  468. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js +0 -2
  469. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js +0 -2
  470. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js +0 -2
  471. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js +0 -2
  472. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js +0 -2
  473. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js +0 -2
  474. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js +0 -2
  475. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js +0 -2
  476. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js +0 -2
  477. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js +0 -2
  478. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js +0 -2
  479. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js +0 -2
  480. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js +0 -2
  481. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js +0 -2
  482. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js +0 -2
  483. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js +0 -2
  484. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js +0 -2
  485. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js +0 -2
  486. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js +0 -2
  487. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js +0 -2
  488. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js +0 -2
  489. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js +0 -2
  490. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js +0 -2
  491. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js +0 -2
  492. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js +0 -2
  493. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js +0 -2
  494. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js +0 -2
  495. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js +0 -2
  496. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js +0 -2
  497. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js +0 -2
  498. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js +0 -2
  499. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js +0 -2
  500. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js +0 -2
  501. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js +0 -2
  502. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js +0 -2
  503. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js +0 -2
  504. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js +0 -2
  505. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js +0 -2
  506. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js +0 -2
  507. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js +0 -2
  508. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js +0 -2
  509. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js +0 -2
  510. package/dist/node_modules/write-excel-file/modules/xml/findElement.js +0 -2
  511. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js +0 -2
  512. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js +0 -2
  513. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js +0 -2
  514. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js +0 -2
  515. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js +0 -2
  516. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js +0 -2
  517. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js +0 -2
  518. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js +0 -2
  519. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js +0 -2
  520. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js +0 -2
  521. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js +0 -2
  522. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js +0 -2
  523. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js +0 -2
  524. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js +0 -2
  525. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js +0 -2
  526. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js +0 -2
  527. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js +0 -2
  528. package/dist/planmagnet/PlanMagnetRoot.js +0 -2
  529. package/dist/planmagnet/PlanMagnetRoutes.js +0 -2
  530. package/dist/planmagnet/activity/activityDescribe.js +0 -2
  531. package/dist/planmagnet/activity/relativeTime.js +0 -2
  532. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +0 -2
  533. package/dist/planmagnet/automation/AutomationExecutionsPanel.js +0 -2
  534. package/dist/planmagnet/automation/AutomationRuleFields.js +0 -2
  535. package/dist/planmagnet/automation/automationRuleTypes.js +0 -2
  536. package/dist/planmagnet/board/BoardViewBar.js +0 -2
  537. package/dist/planmagnet/board/BulkActions.js +0 -2
  538. package/dist/planmagnet/board/ProjectBoard.js +0 -2
  539. package/dist/planmagnet/board/boardViewConfig.js +0 -2
  540. package/dist/planmagnet/budgets/BudgetControls.js +0 -2
  541. package/dist/planmagnet/budgets/ExpenseControls.js +0 -2
  542. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js +0 -2
  543. package/dist/planmagnet/budgets/budgetMath.js +0 -2
  544. package/dist/planmagnet/comments/CommentAttachmentUpload.js +0 -2
  545. package/dist/planmagnet/comments/CommentAttachments.js +0 -2
  546. package/dist/planmagnet/comments/CommentBody.js +0 -2
  547. package/dist/planmagnet/comments/CommentThread.js +0 -2
  548. package/dist/planmagnet/comments/MentionComposer.js +0 -2
  549. package/dist/planmagnet/comments/RoadmapComments.js +0 -2
  550. package/dist/planmagnet/comments/TargetComments.js +0 -2
  551. package/dist/planmagnet/comments/WorkItemActivity.js +0 -2
  552. package/dist/planmagnet/comments/WorkItemComments.js +0 -2
  553. package/dist/planmagnet/comments/commentAttachmentUploadClient.js +0 -2
  554. package/dist/planmagnet/comments/commentImageTokens.js +0 -2
  555. package/dist/planmagnet/comments/commentTokens.js +0 -2
  556. package/dist/planmagnet/comments/fileDisplay.js +0 -2
  557. package/dist/planmagnet/comments/useCommentFileUrl.js +0 -2
  558. package/dist/planmagnet/controls/AutomationRuleControls.js +0 -2
  559. package/dist/planmagnet/controls/CompetitorControls.js +0 -2
  560. package/dist/planmagnet/controls/ConfirmButton.js +0 -2
  561. package/dist/planmagnet/controls/CustomFieldControls.js +0 -2
  562. package/dist/planmagnet/controls/CustomFieldValuesPanel.js +0 -2
  563. package/dist/planmagnet/controls/FeatureControls.js +0 -2
  564. package/dist/planmagnet/controls/FeatureTriage.js +0 -2
  565. package/dist/planmagnet/controls/FeedbackControls.js +0 -2
  566. package/dist/planmagnet/controls/LiveStatus.js +0 -2
  567. package/dist/planmagnet/controls/MilestoneControls.js +0 -2
  568. package/dist/planmagnet/controls/ObjectiveControls.js +0 -2
  569. package/dist/planmagnet/controls/Pickers.js +0 -2
  570. package/dist/planmagnet/controls/PortfolioControls.js +0 -2
  571. package/dist/planmagnet/controls/PrioritizationControls.js +0 -2
  572. package/dist/planmagnet/controls/ProgramControls.js +0 -2
  573. package/dist/planmagnet/controls/ProjectControls.js +0 -2
  574. package/dist/planmagnet/controls/QualityGateControls.js +0 -2
  575. package/dist/planmagnet/controls/ReleaseControls.js +0 -2
  576. package/dist/planmagnet/controls/RiskControls.js +0 -2
  577. package/dist/planmagnet/controls/SyncControls.js +0 -2
  578. package/dist/planmagnet/controls/TemplateControls.js +0 -2
  579. package/dist/planmagnet/controls/WebhookSubscriptionControls.js +0 -2
  580. package/dist/planmagnet/controls/WorkItemControls.js +0 -2
  581. package/dist/planmagnet/create/CreateDialogs.js +0 -2
  582. package/dist/planmagnet/dashboards/DashboardUI.js +0 -2
  583. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.js +0 -2
  584. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.js +0 -2
  585. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.js +0 -2
  586. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.js +0 -2
  587. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js +0 -2
  588. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.js +0 -2
  589. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js +0 -2
  590. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.js +0 -2
  591. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.js +0 -2
  592. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.js +0 -2
  593. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.js +0 -2
  594. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.js +0 -2
  595. package/dist/planmagnet/dependency/DependencyGraph.js +0 -2
  596. package/dist/planmagnet/dependency/DependencyPanel.js +0 -2
  597. package/dist/planmagnet/dependency/GanttChart.js +0 -2
  598. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.js +0 -2
  599. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +0 -2
  600. package/dist/planmagnet/docs/DocDiffView.js +0 -2
  601. package/dist/planmagnet/docs/DocStatusBadge.js +0 -2
  602. package/dist/planmagnet/docs/DocSuggestionsPanel.js +0 -2
  603. package/dist/planmagnet/docs/DocVersionCompare.js +0 -2
  604. package/dist/planmagnet/export/ExportWorkItemsButton.js +0 -2
  605. package/dist/planmagnet/export/workItemsCsv.js +0 -2
  606. package/dist/planmagnet/forecast/DeliveryForecastCard.js +0 -2
  607. package/dist/planmagnet/forecast/ProjectOutlookCard.js +0 -2
  608. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +0 -2
  609. package/dist/planmagnet/forecast/ResourceForecastCard.js +0 -2
  610. package/dist/planmagnet/forecast/riskFlags.js +0 -2
  611. package/dist/planmagnet/hooks/useCounts.js +0 -2
  612. package/dist/planmagnet/hooks/useEntityId.js +0 -2
  613. package/dist/planmagnet/hooks/useLiveRefresh.js +0 -2
  614. package/dist/planmagnet/hooks/usePresence.js +0 -2
  615. package/dist/planmagnet/hooks/useProjectWorkflow.js +0 -2
  616. package/dist/planmagnet/import/exportColumns.js +0 -2
  617. package/dist/planmagnet/integrations/routes.js +0 -2
  618. package/dist/planmagnet/integrations/syncTypes.js +0 -2
  619. package/dist/planmagnet/integrations/useSyncProviderCapabilities.js +0 -2
  620. package/dist/planmagnet/links/CodeLinksPanel.js +0 -2
  621. package/dist/planmagnet/links/IssueLinksPanel.js +0 -2
  622. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +0 -2
  623. package/dist/planmagnet/meetings/MeetingsCard.js +0 -2
  624. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +0 -2
  625. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +0 -2
  626. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +0 -2
  627. package/dist/planmagnet/meetings/meetingActions.js +0 -2
  628. package/dist/planmagnet/meetings/meetingGraphql.js +0 -2
  629. package/dist/planmagnet/meetings/meetingModel.js +0 -2
  630. package/dist/planmagnet/milestones/MilestoneControls.js +0 -2
  631. package/dist/planmagnet/pages/ActivityActivityPagePage.js +0 -2
  632. package/dist/planmagnet/pages/AiActivityPagePage.js +0 -2
  633. package/dist/planmagnet/pages/AiPlanPagePage.js +0 -2
  634. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +0 -2
  635. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +0 -2
  636. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js +0 -2
  637. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +0 -2
  638. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js +0 -2
  639. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js +0 -2
  640. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js +0 -2
  641. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js +0 -2
  642. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +0 -2
  643. package/dist/planmagnet/pages/DashboardsExecutivePagePage.js +0 -2
  644. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.js +0 -2
  645. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js +0 -2
  646. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js +0 -2
  647. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +0 -2
  648. package/dist/planmagnet/pages/DocsDocsPagePage.js +0 -2
  649. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js +0 -2
  650. package/dist/planmagnet/pages/GoalsGoalsPagePage.js +0 -2
  651. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +0 -2
  652. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +0 -2
  653. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js +0 -2
  654. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js +0 -2
  655. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js +0 -2
  656. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +0 -2
  657. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +0 -2
  658. package/dist/planmagnet/pages/NotFoundPage.js +0 -2
  659. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js +0 -2
  660. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js +0 -2
  661. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js +0 -2
  662. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js +0 -2
  663. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +0 -2
  664. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +0 -2
  665. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js +0 -2
  666. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +0 -2
  667. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +0 -2
  668. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.js +0 -2
  669. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +0 -2
  670. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +0 -2
  671. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +0 -2
  672. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +0 -2
  673. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js +0 -2
  674. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +0 -2
  675. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.js +0 -2
  676. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.js +0 -2
  677. package/dist/planmagnet/pages/ProductsProductLinesPagePage.js +0 -2
  678. package/dist/planmagnet/pages/ProductsProductsPagePage.js +0 -2
  679. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +0 -2
  680. package/dist/planmagnet/pages/ProductsReleasesPagePage.js +0 -2
  681. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +0 -2
  682. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +0 -2
  683. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +0 -2
  684. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js +0 -2
  685. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js +0 -2
  686. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js +0 -2
  687. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js +0 -2
  688. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +0 -2
  689. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +0 -2
  690. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js +0 -2
  691. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js +0 -2
  692. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +0 -2
  693. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js +0 -2
  694. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js +0 -2
  695. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +0 -2
  696. package/dist/planmagnet/pages/ProjectsGanttPagePage.js +0 -2
  697. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +0 -2
  698. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +0 -2
  699. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +0 -2
  700. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +0 -2
  701. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +0 -2
  702. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +0 -2
  703. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +0 -2
  704. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.js +0 -2
  705. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.js +0 -2
  706. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js +0 -2
  707. package/dist/planmagnet/pages/ReportsEditReportPagePage.js +0 -2
  708. package/dist/planmagnet/pages/ReportsReportPagePage.js +0 -2
  709. package/dist/planmagnet/pages/ReportsReportsPagePage.js +0 -2
  710. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js +0 -2
  711. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js +0 -2
  712. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +0 -2
  713. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +0 -2
  714. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +0 -2
  715. package/dist/planmagnet/pages/TasksImportPagePage.js +0 -2
  716. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js +0 -2
  717. package/dist/planmagnet/pages/TasksMyWorkPagePage.js +0 -2
  718. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +0 -2
  719. package/dist/planmagnet/pages/TasksTasksPagePage.js +0 -2
  720. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js +0 -2
  721. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js +0 -2
  722. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js +0 -2
  723. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js +0 -2
  724. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js +99 -101
  725. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +0 -2
  726. package/dist/planmagnet/pages/TeamTeamEditPagePage.js +0 -2
  727. package/dist/planmagnet/pages/TeamTeamPagePage.js +0 -2
  728. package/dist/planmagnet/pages/TeamTeamsListPagePage.js +0 -2
  729. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js +0 -2
  730. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js +0 -2
  731. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js +0 -2
  732. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +0 -2
  733. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js +0 -2
  734. package/dist/planmagnet/pages/analytics/MetricsCard.js +0 -2
  735. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js +0 -2
  736. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +0 -2
  737. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +0 -2
  738. package/dist/planmagnet/pages/analytics/ThroughputCard.js +0 -2
  739. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js +0 -2
  740. package/dist/planmagnet/pages/analytics/analyticsRange.js +0 -2
  741. package/dist/planmagnet/people/People.js +0 -2
  742. package/dist/planmagnet/presence/PresenceAvatars.js +0 -2
  743. package/dist/planmagnet/product/FeatureLinkPanels.js +0 -2
  744. package/dist/planmagnet/product/ProductControls.js +0 -2
  745. package/dist/planmagnet/product/ProductFeatureControls.js +0 -2
  746. package/dist/planmagnet/product/ProductFeatureLinkCard.js +0 -2
  747. package/dist/planmagnet/product/ProductLineControls.js +0 -2
  748. package/dist/planmagnet/product/ProductTeamsPanel.js +0 -2
  749. package/dist/planmagnet/product/WorkItemProductFeatureChip.js +0 -2
  750. package/dist/planmagnet/product/hierarchy.js +0 -2
  751. package/dist/planmagnet/product/hierarchyOperations.js +0 -2
  752. package/dist/planmagnet/product/refusal.js +0 -2
  753. package/dist/planmagnet/product/routes.js +0 -2
  754. package/dist/planmagnet/providers/PlanMagnetProvider.js +0 -2
  755. package/dist/planmagnet/releases/ReleaseChecklistCard.js +0 -2
  756. package/dist/planmagnet/releases/ReleaseGatesCard.js +0 -2
  757. package/dist/planmagnet/releases/ReleaseNotesCard.js +0 -2
  758. package/dist/planmagnet/releases/ReleaseReadinessCard.js +0 -2
  759. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js +0 -2
  760. package/dist/planmagnet/releases/useReleaseOptions.js +0 -2
  761. package/dist/planmagnet/reports/ExportMenu.js +0 -2
  762. package/dist/planmagnet/reports/PrintReportView.js +0 -2
  763. package/dist/planmagnet/reports/ReportBuilderCanvas.js +0 -2
  764. package/dist/planmagnet/reports/ReportBuilderPage.js +0 -2
  765. package/dist/planmagnet/reports/ReportRunHistory.js +0 -2
  766. package/dist/planmagnet/reports/ReportWidgetRenderer.js +0 -2
  767. package/dist/planmagnet/reports/SchedulesPanel.js +0 -2
  768. package/dist/planmagnet/reports/ShareDialog.js +0 -2
  769. package/dist/planmagnet/reports/SharedReportPage.js +0 -2
  770. package/dist/planmagnet/reports/WidgetEditorDialog.js +0 -2
  771. package/dist/planmagnet/reports/reportExportPptx.js +0 -2
  772. package/dist/planmagnet/reports/reportExportXlsx.js +0 -2
  773. package/dist/planmagnet/reports/reportGraphql.js +0 -2
  774. package/dist/planmagnet/reports/reportModel.js +0 -2
  775. package/dist/planmagnet/reports/sharedReportRoute.js +0 -2
  776. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.js +0 -2
  777. package/dist/planmagnet/roadmaps/RoadmapControls.js +0 -2
  778. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +0 -2
  779. package/dist/planmagnet/roadmaps/RoadmapPresentation.js +0 -2
  780. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +0 -2
  781. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +0 -2
  782. package/dist/planmagnet/roadmaps/planningFocus.js +0 -2
  783. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js +0 -2
  784. package/dist/planmagnet/satisfaction/SatisfactionFigures.js +0 -2
  785. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js +0 -2
  786. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js +0 -2
  787. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js +0 -2
  788. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js +0 -2
  789. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js +0 -2
  790. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js +0 -2
  791. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js +0 -2
  792. package/dist/planmagnet/satisfaction/satisfaction.js +0 -2
  793. package/dist/planmagnet/satisfaction/satisfactionCsv.js +0 -2
  794. package/dist/planmagnet/satisfaction/satisfactionForm.js +0 -2
  795. package/dist/planmagnet/satisfaction/satisfactionOperations.js +0 -2
  796. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js +0 -2
  797. package/dist/planmagnet/skills/RequiredSkillsEditor.js +0 -2
  798. package/dist/planmagnet/skills/SkillChips.js +0 -2
  799. package/dist/planmagnet/skills/SkillCoverageCard.js +0 -2
  800. package/dist/planmagnet/skills/WorkItemRequiredSkills.js +0 -2
  801. package/dist/planmagnet/skills/skillOperations.js +0 -2
  802. package/dist/planmagnet/skills/skillTags.js +0 -2
  803. package/dist/planmagnet/skills/useRequiredSkillsDraft.js +0 -2
  804. package/dist/planmagnet/sprints/SprintControls.js +0 -2
  805. package/dist/planmagnet/sprints/SprintDates.js +0 -2
  806. package/dist/planmagnet/store/planmagnetStore.js +0 -2
  807. package/dist/planmagnet/team/PendingInvitations.d.ts +1 -3
  808. package/dist/planmagnet/team/PendingInvitations.js +62 -65
  809. package/dist/planmagnet/team/TeamControls.js +0 -2
  810. package/dist/planmagnet/team/UnmatchedCrewIdentities.js +0 -2
  811. package/dist/planmagnet/team/invitationEmail.js +0 -2
  812. package/dist/planmagnet/time/TaskTimePanel.js +0 -2
  813. package/dist/planmagnet/time/TimeEntryControls.js +0 -2
  814. package/dist/planmagnet/time/TimesheetControls.js +0 -2
  815. package/dist/planmagnet/time/timeShared.js +0 -2
  816. package/dist/planmagnet/utils/cn.js +0 -2
  817. package/dist/planmagnet/utils/email.js +0 -2
  818. package/dist/planmagnet/utils/formValidation.js +0 -2
  819. package/dist/planmagnet/utils/graphqlErrors.js +0 -2
  820. package/dist/planmagnet/utils/lineDiff.js +0 -2
  821. package/dist/planmagnet/utils/mutationResult.js +0 -2
  822. package/dist/planmagnet/utils/navigation.js +0 -2
  823. package/dist/planmagnet/utils/qualityGateCriteria.js +0 -2
  824. package/dist/planmagnet/utils/rowNavigation.js +0 -2
  825. package/dist/planmagnet/utils/statusColor.js +0 -2
  826. package/dist/planmagnet/utils/urlParam.js +0 -2
  827. package/dist/planmagnet/webhooks/webhookTypes.js +0 -2
  828. package/dist/shared/hooks/useTr.js +0 -2
  829. package/dist/shared/utils/i18n.js +0 -2
  830. package/package.json +2 -1
  831. package/dist/_virtual/__vite-browser-external.js.map +0 -1
  832. package/dist/components/Button.d.ts.map +0 -1
  833. package/dist/components/Button.stories.d.ts.map +0 -1
  834. package/dist/components/MarkdownEditor.d.ts.map +0 -1
  835. package/dist/components/MarkdownEditor.js.map +0 -1
  836. package/dist/dev/main.d.ts.map +0 -1
  837. package/dist/generated/global-operations.d.ts.map +0 -1
  838. package/dist/generated/global-types.d.ts.map +0 -1
  839. package/dist/generated/wspace-operations.d.ts.map +0 -1
  840. package/dist/generated/wspace-types.d.ts.map +0 -1
  841. package/dist/index.d.ts.map +0 -1
  842. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  843. package/dist/node_modules/@apollo/client/errors/ServerError.js.map +0 -1
  844. package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
  845. package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
  846. package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
  847. package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
  848. package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
  849. package/dist/node_modules/d3-array/src/descending.js.map +0 -1
  850. package/dist/node_modules/d3-array/src/max.js.map +0 -1
  851. package/dist/node_modules/d3-array/src/min.js.map +0 -1
  852. package/dist/node_modules/d3-array/src/number.js.map +0 -1
  853. package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
  854. package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
  855. package/dist/node_modules/d3-array/src/range.js.map +0 -1
  856. package/dist/node_modules/d3-array/src/sort.js.map +0 -1
  857. package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
  858. package/dist/node_modules/d3-color/src/color.js.map +0 -1
  859. package/dist/node_modules/d3-color/src/define.js.map +0 -1
  860. package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
  861. package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
  862. package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
  863. package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
  864. package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
  865. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
  866. package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
  867. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
  868. package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
  869. package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
  870. package/dist/node_modules/d3-format/src/identity.js.map +0 -1
  871. package/dist/node_modules/d3-format/src/locale.js.map +0 -1
  872. package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
  873. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
  874. package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
  875. package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
  876. package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
  877. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
  878. package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
  879. package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
  880. package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
  881. package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
  882. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
  883. package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
  884. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
  885. package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
  886. package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
  887. package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
  888. package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
  889. package/dist/node_modules/d3-path/src/path.js.map +0 -1
  890. package/dist/node_modules/d3-scale/src/band.js.map +0 -1
  891. package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
  892. package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
  893. package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
  894. package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
  895. package/dist/node_modules/d3-scale/src/init.js.map +0 -1
  896. package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
  897. package/dist/node_modules/d3-scale/src/log.js.map +0 -1
  898. package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
  899. package/dist/node_modules/d3-scale/src/number.js.map +0 -1
  900. package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
  901. package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
  902. package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
  903. package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
  904. package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
  905. package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
  906. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
  907. package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
  908. package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
  909. package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
  910. package/dist/node_modules/d3-scale/src/time.js.map +0 -1
  911. package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
  912. package/dist/node_modules/d3-shape/src/area.js.map +0 -1
  913. package/dist/node_modules/d3-shape/src/array.js.map +0 -1
  914. package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
  915. package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
  916. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
  917. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
  918. package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
  919. package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
  920. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
  921. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
  922. package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
  923. package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
  924. package/dist/node_modules/d3-shape/src/line.js.map +0 -1
  925. package/dist/node_modules/d3-shape/src/math.js.map +0 -1
  926. package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
  927. package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
  928. package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
  929. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
  930. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
  931. package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
  932. package/dist/node_modules/d3-shape/src/path.js.map +0 -1
  933. package/dist/node_modules/d3-shape/src/point.js.map +0 -1
  934. package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
  935. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
  936. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
  937. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
  938. package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
  939. package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
  940. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
  941. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
  942. package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
  943. package/dist/node_modules/d3-time/src/day.js.map +0 -1
  944. package/dist/node_modules/d3-time/src/duration.js.map +0 -1
  945. package/dist/node_modules/d3-time/src/hour.js.map +0 -1
  946. package/dist/node_modules/d3-time/src/interval.js.map +0 -1
  947. package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
  948. package/dist/node_modules/d3-time/src/minute.js.map +0 -1
  949. package/dist/node_modules/d3-time/src/month.js.map +0 -1
  950. package/dist/node_modules/d3-time/src/second.js.map +0 -1
  951. package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
  952. package/dist/node_modules/d3-time/src/week.js.map +0 -1
  953. package/dist/node_modules/d3-time/src/year.js.map +0 -1
  954. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
  955. package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
  956. package/dist/node_modules/decimal.js-light/decimal.js.map +0 -1
  957. package/dist/node_modules/eventemitter3/index.js.map +0 -1
  958. package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
  959. package/dist/node_modules/fflate/esm/browser.js.map +0 -1
  960. package/dist/node_modules/internmap/src/index.js.map +0 -1
  961. package/dist/node_modules/jszip/dist/jszip.min.js.map +0 -1
  962. package/dist/node_modules/lodash/_DataView.js.map +0 -1
  963. package/dist/node_modules/lodash/_Hash.js.map +0 -1
  964. package/dist/node_modules/lodash/_ListCache.js.map +0 -1
  965. package/dist/node_modules/lodash/_Map.js.map +0 -1
  966. package/dist/node_modules/lodash/_MapCache.js.map +0 -1
  967. package/dist/node_modules/lodash/_Promise.js.map +0 -1
  968. package/dist/node_modules/lodash/_Set.js.map +0 -1
  969. package/dist/node_modules/lodash/_SetCache.js.map +0 -1
  970. package/dist/node_modules/lodash/_Stack.js.map +0 -1
  971. package/dist/node_modules/lodash/_Symbol.js.map +0 -1
  972. package/dist/node_modules/lodash/_Uint8Array.js.map +0 -1
  973. package/dist/node_modules/lodash/_WeakMap.js.map +0 -1
  974. package/dist/node_modules/lodash/_apply.js.map +0 -1
  975. package/dist/node_modules/lodash/_arrayEach.js.map +0 -1
  976. package/dist/node_modules/lodash/_arrayEvery.js.map +0 -1
  977. package/dist/node_modules/lodash/_arrayFilter.js.map +0 -1
  978. package/dist/node_modules/lodash/_arrayIncludes.js.map +0 -1
  979. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +0 -1
  980. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +0 -1
  981. package/dist/node_modules/lodash/_arrayMap.js.map +0 -1
  982. package/dist/node_modules/lodash/_arrayPush.js.map +0 -1
  983. package/dist/node_modules/lodash/_arraySome.js.map +0 -1
  984. package/dist/node_modules/lodash/_asciiToArray.js.map +0 -1
  985. package/dist/node_modules/lodash/_assignValue.js.map +0 -1
  986. package/dist/node_modules/lodash/_assocIndexOf.js.map +0 -1
  987. package/dist/node_modules/lodash/_baseAssign.js.map +0 -1
  988. package/dist/node_modules/lodash/_baseAssignIn.js.map +0 -1
  989. package/dist/node_modules/lodash/_baseAssignValue.js.map +0 -1
  990. package/dist/node_modules/lodash/_baseClone.js.map +0 -1
  991. package/dist/node_modules/lodash/_baseCreate.js.map +0 -1
  992. package/dist/node_modules/lodash/_baseEach.js.map +0 -1
  993. package/dist/node_modules/lodash/_baseEvery.js.map +0 -1
  994. package/dist/node_modules/lodash/_baseExtremum.js.map +0 -1
  995. package/dist/node_modules/lodash/_baseFindIndex.js.map +0 -1
  996. package/dist/node_modules/lodash/_baseFlatten.js.map +0 -1
  997. package/dist/node_modules/lodash/_baseFor.js.map +0 -1
  998. package/dist/node_modules/lodash/_baseForOwn.js.map +0 -1
  999. package/dist/node_modules/lodash/_baseGet.js.map +0 -1
  1000. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +0 -1
  1001. package/dist/node_modules/lodash/_baseGetTag.js.map +0 -1
  1002. package/dist/node_modules/lodash/_baseGt.js.map +0 -1
  1003. package/dist/node_modules/lodash/_baseHasIn.js.map +0 -1
  1004. package/dist/node_modules/lodash/_baseIndexOf.js.map +0 -1
  1005. package/dist/node_modules/lodash/_baseIsArguments.js.map +0 -1
  1006. package/dist/node_modules/lodash/_baseIsEqual.js.map +0 -1
  1007. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +0 -1
  1008. package/dist/node_modules/lodash/_baseIsMap.js.map +0 -1
  1009. package/dist/node_modules/lodash/_baseIsMatch.js.map +0 -1
  1010. package/dist/node_modules/lodash/_baseIsNaN.js.map +0 -1
  1011. package/dist/node_modules/lodash/_baseIsNative.js.map +0 -1
  1012. package/dist/node_modules/lodash/_baseIsSet.js.map +0 -1
  1013. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +0 -1
  1014. package/dist/node_modules/lodash/_baseIteratee.js.map +0 -1
  1015. package/dist/node_modules/lodash/_baseKeys.js.map +0 -1
  1016. package/dist/node_modules/lodash/_baseKeysIn.js.map +0 -1
  1017. package/dist/node_modules/lodash/_baseLt.js.map +0 -1
  1018. package/dist/node_modules/lodash/_baseMap.js.map +0 -1
  1019. package/dist/node_modules/lodash/_baseMatches.js.map +0 -1
  1020. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +0 -1
  1021. package/dist/node_modules/lodash/_baseOrderBy.js.map +0 -1
  1022. package/dist/node_modules/lodash/_baseProperty.js.map +0 -1
  1023. package/dist/node_modules/lodash/_basePropertyDeep.js.map +0 -1
  1024. package/dist/node_modules/lodash/_baseRange.js.map +0 -1
  1025. package/dist/node_modules/lodash/_baseRest.js.map +0 -1
  1026. package/dist/node_modules/lodash/_baseSetToString.js.map +0 -1
  1027. package/dist/node_modules/lodash/_baseSlice.js.map +0 -1
  1028. package/dist/node_modules/lodash/_baseSome.js.map +0 -1
  1029. package/dist/node_modules/lodash/_baseSortBy.js.map +0 -1
  1030. package/dist/node_modules/lodash/_baseSum.js.map +0 -1
  1031. package/dist/node_modules/lodash/_baseTimes.js.map +0 -1
  1032. package/dist/node_modules/lodash/_baseToString.js.map +0 -1
  1033. package/dist/node_modules/lodash/_baseTrim.js.map +0 -1
  1034. package/dist/node_modules/lodash/_baseUnary.js.map +0 -1
  1035. package/dist/node_modules/lodash/_baseUniq.js.map +0 -1
  1036. package/dist/node_modules/lodash/_baseUnset.js.map +0 -1
  1037. package/dist/node_modules/lodash/_cacheHas.js.map +0 -1
  1038. package/dist/node_modules/lodash/_castPath.js.map +0 -1
  1039. package/dist/node_modules/lodash/_castSlice.js.map +0 -1
  1040. package/dist/node_modules/lodash/_cloneArrayBuffer.js.map +0 -1
  1041. package/dist/node_modules/lodash/_cloneBuffer.js.map +0 -1
  1042. package/dist/node_modules/lodash/_cloneDataView.js.map +0 -1
  1043. package/dist/node_modules/lodash/_cloneRegExp.js.map +0 -1
  1044. package/dist/node_modules/lodash/_cloneSymbol.js.map +0 -1
  1045. package/dist/node_modules/lodash/_cloneTypedArray.js.map +0 -1
  1046. package/dist/node_modules/lodash/_compareAscending.js.map +0 -1
  1047. package/dist/node_modules/lodash/_compareMultiple.js.map +0 -1
  1048. package/dist/node_modules/lodash/_copyArray.js.map +0 -1
  1049. package/dist/node_modules/lodash/_copyObject.js.map +0 -1
  1050. package/dist/node_modules/lodash/_copySymbols.js.map +0 -1
  1051. package/dist/node_modules/lodash/_copySymbolsIn.js.map +0 -1
  1052. package/dist/node_modules/lodash/_coreJsData.js.map +0 -1
  1053. package/dist/node_modules/lodash/_createBaseEach.js.map +0 -1
  1054. package/dist/node_modules/lodash/_createBaseFor.js.map +0 -1
  1055. package/dist/node_modules/lodash/_createCaseFirst.js.map +0 -1
  1056. package/dist/node_modules/lodash/_createFind.js.map +0 -1
  1057. package/dist/node_modules/lodash/_createRange.js.map +0 -1
  1058. package/dist/node_modules/lodash/_createSet.js.map +0 -1
  1059. package/dist/node_modules/lodash/_customOmitClone.js.map +0 -1
  1060. package/dist/node_modules/lodash/_defineProperty.js.map +0 -1
  1061. package/dist/node_modules/lodash/_equalArrays.js.map +0 -1
  1062. package/dist/node_modules/lodash/_equalByTag.js.map +0 -1
  1063. package/dist/node_modules/lodash/_equalObjects.js.map +0 -1
  1064. package/dist/node_modules/lodash/_flatRest.js.map +0 -1
  1065. package/dist/node_modules/lodash/_freeGlobal.js.map +0 -1
  1066. package/dist/node_modules/lodash/_getAllKeys.js.map +0 -1
  1067. package/dist/node_modules/lodash/_getAllKeysIn.js.map +0 -1
  1068. package/dist/node_modules/lodash/_getMapData.js.map +0 -1
  1069. package/dist/node_modules/lodash/_getMatchData.js.map +0 -1
  1070. package/dist/node_modules/lodash/_getNative.js.map +0 -1
  1071. package/dist/node_modules/lodash/_getPrototype.js.map +0 -1
  1072. package/dist/node_modules/lodash/_getRawTag.js.map +0 -1
  1073. package/dist/node_modules/lodash/_getSymbols.js.map +0 -1
  1074. package/dist/node_modules/lodash/_getSymbolsIn.js.map +0 -1
  1075. package/dist/node_modules/lodash/_getTag.js.map +0 -1
  1076. package/dist/node_modules/lodash/_getValue.js.map +0 -1
  1077. package/dist/node_modules/lodash/_hasPath.js.map +0 -1
  1078. package/dist/node_modules/lodash/_hasUnicode.js.map +0 -1
  1079. package/dist/node_modules/lodash/_hashClear.js.map +0 -1
  1080. package/dist/node_modules/lodash/_hashDelete.js.map +0 -1
  1081. package/dist/node_modules/lodash/_hashGet.js.map +0 -1
  1082. package/dist/node_modules/lodash/_hashHas.js.map +0 -1
  1083. package/dist/node_modules/lodash/_hashSet.js.map +0 -1
  1084. package/dist/node_modules/lodash/_initCloneArray.js.map +0 -1
  1085. package/dist/node_modules/lodash/_initCloneByTag.js.map +0 -1
  1086. package/dist/node_modules/lodash/_initCloneObject.js.map +0 -1
  1087. package/dist/node_modules/lodash/_isFlattenable.js.map +0 -1
  1088. package/dist/node_modules/lodash/_isIndex.js.map +0 -1
  1089. package/dist/node_modules/lodash/_isIterateeCall.js.map +0 -1
  1090. package/dist/node_modules/lodash/_isKey.js.map +0 -1
  1091. package/dist/node_modules/lodash/_isKeyable.js.map +0 -1
  1092. package/dist/node_modules/lodash/_isMasked.js.map +0 -1
  1093. package/dist/node_modules/lodash/_isPrototype.js.map +0 -1
  1094. package/dist/node_modules/lodash/_isStrictComparable.js.map +0 -1
  1095. package/dist/node_modules/lodash/_listCacheClear.js.map +0 -1
  1096. package/dist/node_modules/lodash/_listCacheDelete.js.map +0 -1
  1097. package/dist/node_modules/lodash/_listCacheGet.js.map +0 -1
  1098. package/dist/node_modules/lodash/_listCacheHas.js.map +0 -1
  1099. package/dist/node_modules/lodash/_listCacheSet.js.map +0 -1
  1100. package/dist/node_modules/lodash/_mapCacheClear.js.map +0 -1
  1101. package/dist/node_modules/lodash/_mapCacheDelete.js.map +0 -1
  1102. package/dist/node_modules/lodash/_mapCacheGet.js.map +0 -1
  1103. package/dist/node_modules/lodash/_mapCacheHas.js.map +0 -1
  1104. package/dist/node_modules/lodash/_mapCacheSet.js.map +0 -1
  1105. package/dist/node_modules/lodash/_mapToArray.js.map +0 -1
  1106. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +0 -1
  1107. package/dist/node_modules/lodash/_memoizeCapped.js.map +0 -1
  1108. package/dist/node_modules/lodash/_nativeCreate.js.map +0 -1
  1109. package/dist/node_modules/lodash/_nativeKeys.js.map +0 -1
  1110. package/dist/node_modules/lodash/_nativeKeysIn.js.map +0 -1
  1111. package/dist/node_modules/lodash/_nodeUtil.js.map +0 -1
  1112. package/dist/node_modules/lodash/_objectToString.js.map +0 -1
  1113. package/dist/node_modules/lodash/_overArg.js.map +0 -1
  1114. package/dist/node_modules/lodash/_overRest.js.map +0 -1
  1115. package/dist/node_modules/lodash/_parent.js.map +0 -1
  1116. package/dist/node_modules/lodash/_root.js.map +0 -1
  1117. package/dist/node_modules/lodash/_setCacheAdd.js.map +0 -1
  1118. package/dist/node_modules/lodash/_setCacheHas.js.map +0 -1
  1119. package/dist/node_modules/lodash/_setToArray.js.map +0 -1
  1120. package/dist/node_modules/lodash/_setToString.js.map +0 -1
  1121. package/dist/node_modules/lodash/_shortOut.js.map +0 -1
  1122. package/dist/node_modules/lodash/_stackClear.js.map +0 -1
  1123. package/dist/node_modules/lodash/_stackDelete.js.map +0 -1
  1124. package/dist/node_modules/lodash/_stackGet.js.map +0 -1
  1125. package/dist/node_modules/lodash/_stackHas.js.map +0 -1
  1126. package/dist/node_modules/lodash/_stackSet.js.map +0 -1
  1127. package/dist/node_modules/lodash/_strictIndexOf.js.map +0 -1
  1128. package/dist/node_modules/lodash/_stringToArray.js.map +0 -1
  1129. package/dist/node_modules/lodash/_stringToPath.js.map +0 -1
  1130. package/dist/node_modules/lodash/_toKey.js.map +0 -1
  1131. package/dist/node_modules/lodash/_toSource.js.map +0 -1
  1132. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +0 -1
  1133. package/dist/node_modules/lodash/_unicodeToArray.js.map +0 -1
  1134. package/dist/node_modules/lodash/constant.js.map +0 -1
  1135. package/dist/node_modules/lodash/debounce.js.map +0 -1
  1136. package/dist/node_modules/lodash/eq.js.map +0 -1
  1137. package/dist/node_modules/lodash/every.js.map +0 -1
  1138. package/dist/node_modules/lodash/find.js.map +0 -1
  1139. package/dist/node_modules/lodash/findIndex.js.map +0 -1
  1140. package/dist/node_modules/lodash/flatMap.js.map +0 -1
  1141. package/dist/node_modules/lodash/flatten.js.map +0 -1
  1142. package/dist/node_modules/lodash/get.js.map +0 -1
  1143. package/dist/node_modules/lodash/hasIn.js.map +0 -1
  1144. package/dist/node_modules/lodash/identity.js.map +0 -1
  1145. package/dist/node_modules/lodash/isArguments.js.map +0 -1
  1146. package/dist/node_modules/lodash/isArray.js.map +0 -1
  1147. package/dist/node_modules/lodash/isArrayLike.js.map +0 -1
  1148. package/dist/node_modules/lodash/isBoolean.js.map +0 -1
  1149. package/dist/node_modules/lodash/isBuffer.js.map +0 -1
  1150. package/dist/node_modules/lodash/isEqual.js.map +0 -1
  1151. package/dist/node_modules/lodash/isFunction.js.map +0 -1
  1152. package/dist/node_modules/lodash/isLength.js.map +0 -1
  1153. package/dist/node_modules/lodash/isMap.js.map +0 -1
  1154. package/dist/node_modules/lodash/isNaN.js.map +0 -1
  1155. package/dist/node_modules/lodash/isNil.js.map +0 -1
  1156. package/dist/node_modules/lodash/isNumber.js.map +0 -1
  1157. package/dist/node_modules/lodash/isObject.js.map +0 -1
  1158. package/dist/node_modules/lodash/isObjectLike.js.map +0 -1
  1159. package/dist/node_modules/lodash/isPlainObject.js.map +0 -1
  1160. package/dist/node_modules/lodash/isSet.js.map +0 -1
  1161. package/dist/node_modules/lodash/isString.js.map +0 -1
  1162. package/dist/node_modules/lodash/isSymbol.js.map +0 -1
  1163. package/dist/node_modules/lodash/isTypedArray.js.map +0 -1
  1164. package/dist/node_modules/lodash/keys.js.map +0 -1
  1165. package/dist/node_modules/lodash/keysIn.js.map +0 -1
  1166. package/dist/node_modules/lodash/last.js.map +0 -1
  1167. package/dist/node_modules/lodash/map.js.map +0 -1
  1168. package/dist/node_modules/lodash/mapValues.js.map +0 -1
  1169. package/dist/node_modules/lodash/max.js.map +0 -1
  1170. package/dist/node_modules/lodash/maxBy.js.map +0 -1
  1171. package/dist/node_modules/lodash/memoize.js.map +0 -1
  1172. package/dist/node_modules/lodash/min.js.map +0 -1
  1173. package/dist/node_modules/lodash/noop.js.map +0 -1
  1174. package/dist/node_modules/lodash/now.js.map +0 -1
  1175. package/dist/node_modules/lodash/omit.js.map +0 -1
  1176. package/dist/node_modules/lodash/property.js.map +0 -1
  1177. package/dist/node_modules/lodash/range.js.map +0 -1
  1178. package/dist/node_modules/lodash/some.js.map +0 -1
  1179. package/dist/node_modules/lodash/sortBy.js.map +0 -1
  1180. package/dist/node_modules/lodash/stubArray.js.map +0 -1
  1181. package/dist/node_modules/lodash/stubFalse.js.map +0 -1
  1182. package/dist/node_modules/lodash/sumBy.js.map +0 -1
  1183. package/dist/node_modules/lodash/throttle.js.map +0 -1
  1184. package/dist/node_modules/lodash/toFinite.js.map +0 -1
  1185. package/dist/node_modules/lodash/toInteger.js.map +0 -1
  1186. package/dist/node_modules/lodash/toNumber.js.map +0 -1
  1187. package/dist/node_modules/lodash/toString.js.map +0 -1
  1188. package/dist/node_modules/lodash/uniqBy.js.map +0 -1
  1189. package/dist/node_modules/lodash/upperFirst.js.map +0 -1
  1190. package/dist/node_modules/object-assign/index.js.map +0 -1
  1191. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js.map +0 -1
  1192. package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
  1193. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
  1194. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
  1195. package/dist/node_modules/prop-types/index.js.map +0 -1
  1196. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
  1197. package/dist/node_modules/prop-types/lib/has.js.map +0 -1
  1198. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1199. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1200. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
  1201. package/dist/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1202. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1203. package/dist/node_modules/react-is/index.js.map +0 -1
  1204. package/dist/node_modules/react-smooth/es6/Animate.js.map +0 -1
  1205. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +0 -1
  1206. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +0 -1
  1207. package/dist/node_modules/react-smooth/es6/easing.js.map +0 -1
  1208. package/dist/node_modules/react-smooth/es6/index.js.map +0 -1
  1209. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +0 -1
  1210. package/dist/node_modules/react-smooth/es6/util.js.map +0 -1
  1211. package/dist/node_modules/recharts/es6/cartesian/Area.js.map +0 -1
  1212. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +0 -1
  1213. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +0 -1
  1214. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +0 -1
  1215. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +0 -1
  1216. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +0 -1
  1217. package/dist/node_modules/recharts/es6/cartesian/Line.js.map +0 -1
  1218. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +0 -1
  1219. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +0 -1
  1220. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +0 -1
  1221. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +0 -1
  1222. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +0 -1
  1223. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +0 -1
  1224. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +0 -1
  1225. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +0 -1
  1226. package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +0 -1
  1227. package/dist/node_modules/recharts/es6/chart/BarChart.js.map +0 -1
  1228. package/dist/node_modules/recharts/es6/chart/LineChart.js.map +0 -1
  1229. package/dist/node_modules/recharts/es6/chart/Sankey.js.map +0 -1
  1230. package/dist/node_modules/recharts/es6/chart/Treemap.js.map +0 -1
  1231. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +0 -1
  1232. package/dist/node_modules/recharts/es6/component/Cell.js.map +0 -1
  1233. package/dist/node_modules/recharts/es6/component/Cursor.js.map +0 -1
  1234. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +0 -1
  1235. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +0 -1
  1236. package/dist/node_modules/recharts/es6/component/Label.js.map +0 -1
  1237. package/dist/node_modules/recharts/es6/component/LabelList.js.map +0 -1
  1238. package/dist/node_modules/recharts/es6/component/Legend.js.map +0 -1
  1239. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +0 -1
  1240. package/dist/node_modules/recharts/es6/component/Text.js.map +0 -1
  1241. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +0 -1
  1242. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +0 -1
  1243. package/dist/node_modules/recharts/es6/container/Layer.js.map +0 -1
  1244. package/dist/node_modules/recharts/es6/container/Surface.js.map +0 -1
  1245. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +0 -1
  1246. package/dist/node_modules/recharts/es6/shape/Cross.js.map +0 -1
  1247. package/dist/node_modules/recharts/es6/shape/Curve.js.map +0 -1
  1248. package/dist/node_modules/recharts/es6/shape/Dot.js.map +0 -1
  1249. package/dist/node_modules/recharts/es6/shape/Polygon.js.map +0 -1
  1250. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +0 -1
  1251. package/dist/node_modules/recharts/es6/shape/Sector.js.map +0 -1
  1252. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +0 -1
  1253. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +0 -1
  1254. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +0 -1
  1255. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +0 -1
  1256. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +0 -1
  1257. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +0 -1
  1258. package/dist/node_modules/recharts/es6/util/Constants.js.map +0 -1
  1259. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +0 -1
  1260. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +0 -1
  1261. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +0 -1
  1262. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +0 -1
  1263. package/dist/node_modules/recharts/es6/util/Events.js.map +0 -1
  1264. package/dist/node_modules/recharts/es6/util/Global.js.map +0 -1
  1265. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +0 -1
  1266. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +0 -1
  1267. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +0 -1
  1268. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +0 -1
  1269. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +0 -1
  1270. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +0 -1
  1271. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +0 -1
  1272. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +0 -1
  1273. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +0 -1
  1274. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +0 -1
  1275. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +0 -1
  1276. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +0 -1
  1277. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +0 -1
  1278. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +0 -1
  1279. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +0 -1
  1280. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +0 -1
  1281. package/dist/node_modules/recharts/es6/util/types.js.map +0 -1
  1282. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +0 -1
  1283. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +0 -1
  1284. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +0 -1
  1285. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
  1286. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  1287. package/dist/node_modules/victory-vendor/es/d3-scale.js.map +0 -1
  1288. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js.map +0 -1
  1289. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js.map +0 -1
  1290. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js.map +0 -1
  1291. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js.map +0 -1
  1292. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js.map +0 -1
  1293. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js.map +0 -1
  1294. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js.map +0 -1
  1295. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js.map +0 -1
  1296. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js.map +0 -1
  1297. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js.map +0 -1
  1298. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js.map +0 -1
  1299. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js.map +0 -1
  1300. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js.map +0 -1
  1301. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js.map +0 -1
  1302. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js.map +0 -1
  1303. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js.map +0 -1
  1304. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js.map +0 -1
  1305. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js.map +0 -1
  1306. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js.map +0 -1
  1307. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js.map +0 -1
  1308. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js.map +0 -1
  1309. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js.map +0 -1
  1310. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js.map +0 -1
  1311. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js.map +0 -1
  1312. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js.map +0 -1
  1313. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js.map +0 -1
  1314. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js.map +0 -1
  1315. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js.map +0 -1
  1316. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js.map +0 -1
  1317. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js.map +0 -1
  1318. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js.map +0 -1
  1319. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js.map +0 -1
  1320. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js.map +0 -1
  1321. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js.map +0 -1
  1322. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js.map +0 -1
  1323. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js.map +0 -1
  1324. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js.map +0 -1
  1325. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js.map +0 -1
  1326. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js.map +0 -1
  1327. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js.map +0 -1
  1328. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js.map +0 -1
  1329. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js.map +0 -1
  1330. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js.map +0 -1
  1331. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js.map +0 -1
  1332. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js.map +0 -1
  1333. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js.map +0 -1
  1334. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js.map +0 -1
  1335. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js.map +0 -1
  1336. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js.map +0 -1
  1337. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js.map +0 -1
  1338. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js.map +0 -1
  1339. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js.map +0 -1
  1340. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js.map +0 -1
  1341. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js.map +0 -1
  1342. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js.map +0 -1
  1343. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js.map +0 -1
  1344. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js.map +0 -1
  1345. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js.map +0 -1
  1346. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js.map +0 -1
  1347. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js.map +0 -1
  1348. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js.map +0 -1
  1349. package/dist/node_modules/write-excel-file/modules/xml/findElement.js.map +0 -1
  1350. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js.map +0 -1
  1351. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js.map +0 -1
  1352. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js.map +0 -1
  1353. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js.map +0 -1
  1354. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js.map +0 -1
  1355. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js.map +0 -1
  1356. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js.map +0 -1
  1357. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js.map +0 -1
  1358. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js.map +0 -1
  1359. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js.map +0 -1
  1360. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js.map +0 -1
  1361. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js.map +0 -1
  1362. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js.map +0 -1
  1363. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js.map +0 -1
  1364. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js.map +0 -1
  1365. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js.map +0 -1
  1366. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js.map +0 -1
  1367. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +0 -1
  1368. package/dist/planmagnet/PlanMagnetRoot.js.map +0 -1
  1369. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +0 -1
  1370. package/dist/planmagnet/PlanMagnetRoutes.js.map +0 -1
  1371. package/dist/planmagnet/activity/activityDescribe.d.ts.map +0 -1
  1372. package/dist/planmagnet/activity/activityDescribe.js.map +0 -1
  1373. package/dist/planmagnet/activity/relativeTime.d.ts.map +0 -1
  1374. package/dist/planmagnet/activity/relativeTime.js.map +0 -1
  1375. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +0 -1
  1376. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +0 -1
  1377. package/dist/planmagnet/automation/AutomationExecutionsPanel.d.ts.map +0 -1
  1378. package/dist/planmagnet/automation/AutomationExecutionsPanel.js.map +0 -1
  1379. package/dist/planmagnet/automation/AutomationRuleFields.d.ts.map +0 -1
  1380. package/dist/planmagnet/automation/AutomationRuleFields.js.map +0 -1
  1381. package/dist/planmagnet/automation/automationRuleTypes.d.ts.map +0 -1
  1382. package/dist/planmagnet/automation/automationRuleTypes.js.map +0 -1
  1383. package/dist/planmagnet/board/BoardViewBar.d.ts.map +0 -1
  1384. package/dist/planmagnet/board/BoardViewBar.js.map +0 -1
  1385. package/dist/planmagnet/board/BulkActions.d.ts.map +0 -1
  1386. package/dist/planmagnet/board/BulkActions.js.map +0 -1
  1387. package/dist/planmagnet/board/ProjectBoard.d.ts.map +0 -1
  1388. package/dist/planmagnet/board/ProjectBoard.js.map +0 -1
  1389. package/dist/planmagnet/board/boardViewConfig.d.ts.map +0 -1
  1390. package/dist/planmagnet/board/boardViewConfig.js.map +0 -1
  1391. package/dist/planmagnet/budgets/BudgetControls.d.ts.map +0 -1
  1392. package/dist/planmagnet/budgets/BudgetControls.js.map +0 -1
  1393. package/dist/planmagnet/budgets/ExpenseControls.d.ts.map +0 -1
  1394. package/dist/planmagnet/budgets/ExpenseControls.js.map +0 -1
  1395. package/dist/planmagnet/budgets/ProjectBudgetsSummary.d.ts.map +0 -1
  1396. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js.map +0 -1
  1397. package/dist/planmagnet/budgets/budgetMath.d.ts.map +0 -1
  1398. package/dist/planmagnet/budgets/budgetMath.js.map +0 -1
  1399. package/dist/planmagnet/comments/CommentAttachmentUpload.d.ts.map +0 -1
  1400. package/dist/planmagnet/comments/CommentAttachmentUpload.js.map +0 -1
  1401. package/dist/planmagnet/comments/CommentAttachments.d.ts.map +0 -1
  1402. package/dist/planmagnet/comments/CommentAttachments.js.map +0 -1
  1403. package/dist/planmagnet/comments/CommentBody.d.ts.map +0 -1
  1404. package/dist/planmagnet/comments/CommentBody.js.map +0 -1
  1405. package/dist/planmagnet/comments/CommentThread.d.ts.map +0 -1
  1406. package/dist/planmagnet/comments/CommentThread.js.map +0 -1
  1407. package/dist/planmagnet/comments/MentionComposer.d.ts.map +0 -1
  1408. package/dist/planmagnet/comments/MentionComposer.js.map +0 -1
  1409. package/dist/planmagnet/comments/RoadmapComments.d.ts.map +0 -1
  1410. package/dist/planmagnet/comments/RoadmapComments.js.map +0 -1
  1411. package/dist/planmagnet/comments/TargetComments.d.ts.map +0 -1
  1412. package/dist/planmagnet/comments/TargetComments.js.map +0 -1
  1413. package/dist/planmagnet/comments/WorkItemActivity.d.ts.map +0 -1
  1414. package/dist/planmagnet/comments/WorkItemActivity.js.map +0 -1
  1415. package/dist/planmagnet/comments/WorkItemComments.d.ts.map +0 -1
  1416. package/dist/planmagnet/comments/WorkItemComments.js.map +0 -1
  1417. package/dist/planmagnet/comments/commentAttachmentUploadClient.d.ts.map +0 -1
  1418. package/dist/planmagnet/comments/commentAttachmentUploadClient.js.map +0 -1
  1419. package/dist/planmagnet/comments/commentImageTokens.d.ts.map +0 -1
  1420. package/dist/planmagnet/comments/commentImageTokens.js.map +0 -1
  1421. package/dist/planmagnet/comments/commentTokens.d.ts.map +0 -1
  1422. package/dist/planmagnet/comments/commentTokens.js.map +0 -1
  1423. package/dist/planmagnet/comments/fileDisplay.d.ts.map +0 -1
  1424. package/dist/planmagnet/comments/fileDisplay.js.map +0 -1
  1425. package/dist/planmagnet/comments/useCommentFileUrl.d.ts.map +0 -1
  1426. package/dist/planmagnet/comments/useCommentFileUrl.js.map +0 -1
  1427. package/dist/planmagnet/controls/AutomationRuleControls.d.ts.map +0 -1
  1428. package/dist/planmagnet/controls/AutomationRuleControls.js.map +0 -1
  1429. package/dist/planmagnet/controls/CompetitorControls.d.ts.map +0 -1
  1430. package/dist/planmagnet/controls/CompetitorControls.js.map +0 -1
  1431. package/dist/planmagnet/controls/ConfirmButton.d.ts.map +0 -1
  1432. package/dist/planmagnet/controls/ConfirmButton.js.map +0 -1
  1433. package/dist/planmagnet/controls/CustomFieldControls.d.ts.map +0 -1
  1434. package/dist/planmagnet/controls/CustomFieldControls.js.map +0 -1
  1435. package/dist/planmagnet/controls/CustomFieldValuesPanel.d.ts.map +0 -1
  1436. package/dist/planmagnet/controls/CustomFieldValuesPanel.js.map +0 -1
  1437. package/dist/planmagnet/controls/FeatureControls.d.ts.map +0 -1
  1438. package/dist/planmagnet/controls/FeatureControls.js.map +0 -1
  1439. package/dist/planmagnet/controls/FeatureTriage.d.ts.map +0 -1
  1440. package/dist/planmagnet/controls/FeatureTriage.js.map +0 -1
  1441. package/dist/planmagnet/controls/FeedbackControls.d.ts.map +0 -1
  1442. package/dist/planmagnet/controls/FeedbackControls.js.map +0 -1
  1443. package/dist/planmagnet/controls/LiveStatus.d.ts.map +0 -1
  1444. package/dist/planmagnet/controls/LiveStatus.js.map +0 -1
  1445. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +0 -1
  1446. package/dist/planmagnet/controls/MilestoneControls.js.map +0 -1
  1447. package/dist/planmagnet/controls/ObjectiveControls.d.ts.map +0 -1
  1448. package/dist/planmagnet/controls/ObjectiveControls.js.map +0 -1
  1449. package/dist/planmagnet/controls/Pickers.d.ts.map +0 -1
  1450. package/dist/planmagnet/controls/Pickers.js.map +0 -1
  1451. package/dist/planmagnet/controls/PortfolioControls.d.ts.map +0 -1
  1452. package/dist/planmagnet/controls/PortfolioControls.js.map +0 -1
  1453. package/dist/planmagnet/controls/PrioritizationControls.d.ts.map +0 -1
  1454. package/dist/planmagnet/controls/PrioritizationControls.js.map +0 -1
  1455. package/dist/planmagnet/controls/ProgramControls.d.ts.map +0 -1
  1456. package/dist/planmagnet/controls/ProgramControls.js.map +0 -1
  1457. package/dist/planmagnet/controls/ProjectControls.d.ts.map +0 -1
  1458. package/dist/planmagnet/controls/ProjectControls.js.map +0 -1
  1459. package/dist/planmagnet/controls/QualityGateControls.d.ts.map +0 -1
  1460. package/dist/planmagnet/controls/QualityGateControls.js.map +0 -1
  1461. package/dist/planmagnet/controls/ReleaseControls.d.ts.map +0 -1
  1462. package/dist/planmagnet/controls/ReleaseControls.js.map +0 -1
  1463. package/dist/planmagnet/controls/RiskControls.d.ts.map +0 -1
  1464. package/dist/planmagnet/controls/RiskControls.js.map +0 -1
  1465. package/dist/planmagnet/controls/SyncControls.d.ts.map +0 -1
  1466. package/dist/planmagnet/controls/SyncControls.js.map +0 -1
  1467. package/dist/planmagnet/controls/TemplateControls.d.ts.map +0 -1
  1468. package/dist/planmagnet/controls/TemplateControls.js.map +0 -1
  1469. package/dist/planmagnet/controls/WebhookSubscriptionControls.d.ts.map +0 -1
  1470. package/dist/planmagnet/controls/WebhookSubscriptionControls.js.map +0 -1
  1471. package/dist/planmagnet/controls/WorkItemControls.d.ts.map +0 -1
  1472. package/dist/planmagnet/controls/WorkItemControls.js.map +0 -1
  1473. package/dist/planmagnet/create/CreateDialogs.d.ts.map +0 -1
  1474. package/dist/planmagnet/create/CreateDialogs.js.map +0 -1
  1475. package/dist/planmagnet/dashboards/DashboardUI.d.ts.map +0 -1
  1476. package/dist/planmagnet/dashboards/DashboardUI.js.map +0 -1
  1477. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.d.ts.map +0 -1
  1478. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.js.map +0 -1
  1479. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.d.ts.map +0 -1
  1480. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.js.map +0 -1
  1481. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.d.ts.map +0 -1
  1482. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.js.map +0 -1
  1483. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.d.ts.map +0 -1
  1484. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.js.map +0 -1
  1485. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.d.ts.map +0 -1
  1486. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js.map +0 -1
  1487. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.d.ts.map +0 -1
  1488. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.js.map +0 -1
  1489. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.d.ts.map +0 -1
  1490. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js.map +0 -1
  1491. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.d.ts.map +0 -1
  1492. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.js.map +0 -1
  1493. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.d.ts.map +0 -1
  1494. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.js.map +0 -1
  1495. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.d.ts.map +0 -1
  1496. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.js.map +0 -1
  1497. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.d.ts.map +0 -1
  1498. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.js.map +0 -1
  1499. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.d.ts.map +0 -1
  1500. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.js.map +0 -1
  1501. package/dist/planmagnet/dependency/DependencyGraph.d.ts.map +0 -1
  1502. package/dist/planmagnet/dependency/DependencyGraph.js.map +0 -1
  1503. package/dist/planmagnet/dependency/DependencyPanel.d.ts.map +0 -1
  1504. package/dist/planmagnet/dependency/DependencyPanel.js.map +0 -1
  1505. package/dist/planmagnet/dependency/GanttChart.d.ts.map +0 -1
  1506. package/dist/planmagnet/dependency/GanttChart.js.map +0 -1
  1507. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.d.ts.map +0 -1
  1508. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.js.map +0 -1
  1509. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts.map +0 -1
  1510. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js.map +0 -1
  1511. package/dist/planmagnet/docs/DocDiffView.d.ts.map +0 -1
  1512. package/dist/planmagnet/docs/DocDiffView.js.map +0 -1
  1513. package/dist/planmagnet/docs/DocStatusBadge.d.ts.map +0 -1
  1514. package/dist/planmagnet/docs/DocStatusBadge.js.map +0 -1
  1515. package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts.map +0 -1
  1516. package/dist/planmagnet/docs/DocSuggestionsPanel.js.map +0 -1
  1517. package/dist/planmagnet/docs/DocVersionCompare.d.ts.map +0 -1
  1518. package/dist/planmagnet/docs/DocVersionCompare.js.map +0 -1
  1519. package/dist/planmagnet/export/ExportWorkItemsButton.d.ts.map +0 -1
  1520. package/dist/planmagnet/export/ExportWorkItemsButton.js.map +0 -1
  1521. package/dist/planmagnet/export/workItemsCsv.d.ts.map +0 -1
  1522. package/dist/planmagnet/export/workItemsCsv.js.map +0 -1
  1523. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +0 -1
  1524. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +0 -1
  1525. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +0 -1
  1526. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +0 -1
  1527. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +0 -1
  1528. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +0 -1
  1529. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +0 -1
  1530. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +0 -1
  1531. package/dist/planmagnet/forecast/riskFlags.d.ts.map +0 -1
  1532. package/dist/planmagnet/forecast/riskFlags.js.map +0 -1
  1533. package/dist/planmagnet/hooks/useCounts.d.ts.map +0 -1
  1534. package/dist/planmagnet/hooks/useCounts.js.map +0 -1
  1535. package/dist/planmagnet/hooks/useEntityId.d.ts.map +0 -1
  1536. package/dist/planmagnet/hooks/useEntityId.js.map +0 -1
  1537. package/dist/planmagnet/hooks/useLiveRefresh.d.ts.map +0 -1
  1538. package/dist/planmagnet/hooks/useLiveRefresh.js.map +0 -1
  1539. package/dist/planmagnet/hooks/usePresence.d.ts.map +0 -1
  1540. package/dist/planmagnet/hooks/usePresence.js.map +0 -1
  1541. package/dist/planmagnet/hooks/useProjectWorkflow.d.ts.map +0 -1
  1542. package/dist/planmagnet/hooks/useProjectWorkflow.js.map +0 -1
  1543. package/dist/planmagnet/import/exportColumns.d.ts.map +0 -1
  1544. package/dist/planmagnet/import/exportColumns.js.map +0 -1
  1545. package/dist/planmagnet/index.d.ts.map +0 -1
  1546. package/dist/planmagnet/integrations/routes.d.ts.map +0 -1
  1547. package/dist/planmagnet/integrations/routes.js.map +0 -1
  1548. package/dist/planmagnet/integrations/syncTypes.d.ts.map +0 -1
  1549. package/dist/planmagnet/integrations/syncTypes.js.map +0 -1
  1550. package/dist/planmagnet/integrations/useSyncProviderCapabilities.d.ts.map +0 -1
  1551. package/dist/planmagnet/integrations/useSyncProviderCapabilities.js.map +0 -1
  1552. package/dist/planmagnet/links/CodeLinksPanel.d.ts.map +0 -1
  1553. package/dist/planmagnet/links/CodeLinksPanel.js.map +0 -1
  1554. package/dist/planmagnet/links/IssueLinksPanel.d.ts.map +0 -1
  1555. package/dist/planmagnet/links/IssueLinksPanel.js.map +0 -1
  1556. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +0 -1
  1557. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +0 -1
  1558. package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +0 -1
  1559. package/dist/planmagnet/meetings/MeetingsCard.js.map +0 -1
  1560. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +0 -1
  1561. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +0 -1
  1562. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +0 -1
  1563. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +0 -1
  1564. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +0 -1
  1565. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +0 -1
  1566. package/dist/planmagnet/meetings/meetingActions.d.ts.map +0 -1
  1567. package/dist/planmagnet/meetings/meetingActions.js.map +0 -1
  1568. package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +0 -1
  1569. package/dist/planmagnet/meetings/meetingGraphql.js.map +0 -1
  1570. package/dist/planmagnet/meetings/meetingModel.d.ts.map +0 -1
  1571. package/dist/planmagnet/meetings/meetingModel.js.map +0 -1
  1572. package/dist/planmagnet/milestones/MilestoneControls.d.ts.map +0 -1
  1573. package/dist/planmagnet/milestones/MilestoneControls.js.map +0 -1
  1574. package/dist/planmagnet/pages/ActivityActivityPagePage.d.ts.map +0 -1
  1575. package/dist/planmagnet/pages/ActivityActivityPagePage.js.map +0 -1
  1576. package/dist/planmagnet/pages/AiActivityPagePage.d.ts.map +0 -1
  1577. package/dist/planmagnet/pages/AiActivityPagePage.js.map +0 -1
  1578. package/dist/planmagnet/pages/AiPlanPagePage.d.ts.map +0 -1
  1579. package/dist/planmagnet/pages/AiPlanPagePage.js.map +0 -1
  1580. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +0 -1
  1581. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +0 -1
  1582. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.d.ts.map +0 -1
  1583. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js.map +0 -1
  1584. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.d.ts.map +0 -1
  1585. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js.map +0 -1
  1586. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.d.ts.map +0 -1
  1587. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js.map +0 -1
  1588. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.d.ts.map +0 -1
  1589. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js.map +0 -1
  1590. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.d.ts.map +0 -1
  1591. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js.map +0 -1
  1592. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.d.ts.map +0 -1
  1593. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js.map +0 -1
  1594. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.d.ts.map +0 -1
  1595. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js.map +0 -1
  1596. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +0 -1
  1597. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +0 -1
  1598. package/dist/planmagnet/pages/DashboardsExecutivePagePage.d.ts.map +0 -1
  1599. package/dist/planmagnet/pages/DashboardsExecutivePagePage.js.map +0 -1
  1600. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.d.ts.map +0 -1
  1601. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.js.map +0 -1
  1602. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.d.ts.map +0 -1
  1603. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js.map +0 -1
  1604. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.d.ts.map +0 -1
  1605. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js.map +0 -1
  1606. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +0 -1
  1607. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +0 -1
  1608. package/dist/planmagnet/pages/DocsDocsPagePage.d.ts.map +0 -1
  1609. package/dist/planmagnet/pages/DocsDocsPagePage.js.map +0 -1
  1610. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.d.ts.map +0 -1
  1611. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js.map +0 -1
  1612. package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +0 -1
  1613. package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +0 -1
  1614. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +0 -1
  1615. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +0 -1
  1616. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.d.ts.map +0 -1
  1617. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +0 -1
  1618. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.d.ts.map +0 -1
  1619. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js.map +0 -1
  1620. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.d.ts.map +0 -1
  1621. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js.map +0 -1
  1622. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.d.ts.map +0 -1
  1623. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js.map +0 -1
  1624. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +0 -1
  1625. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +0 -1
  1626. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +0 -1
  1627. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +0 -1
  1628. package/dist/planmagnet/pages/NotFoundPage.d.ts.map +0 -1
  1629. package/dist/planmagnet/pages/NotFoundPage.js.map +0 -1
  1630. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.d.ts.map +0 -1
  1631. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js.map +0 -1
  1632. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.d.ts.map +0 -1
  1633. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js.map +0 -1
  1634. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.d.ts.map +0 -1
  1635. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js.map +0 -1
  1636. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.d.ts.map +0 -1
  1637. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js.map +0 -1
  1638. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +0 -1
  1639. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +0 -1
  1640. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +0 -1
  1641. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +0 -1
  1642. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.d.ts.map +0 -1
  1643. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js.map +0 -1
  1644. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +0 -1
  1645. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +0 -1
  1646. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +0 -1
  1647. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +0 -1
  1648. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.d.ts.map +0 -1
  1649. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.js.map +0 -1
  1650. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +0 -1
  1651. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +0 -1
  1652. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +0 -1
  1653. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +0 -1
  1654. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +0 -1
  1655. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +0 -1
  1656. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +0 -1
  1657. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +0 -1
  1658. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.d.ts.map +0 -1
  1659. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js.map +0 -1
  1660. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +0 -1
  1661. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +0 -1
  1662. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.d.ts.map +0 -1
  1663. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.js.map +0 -1
  1664. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.d.ts.map +0 -1
  1665. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.js.map +0 -1
  1666. package/dist/planmagnet/pages/ProductsProductLinesPagePage.d.ts.map +0 -1
  1667. package/dist/planmagnet/pages/ProductsProductLinesPagePage.js.map +0 -1
  1668. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +0 -1
  1669. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +0 -1
  1670. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +0 -1
  1671. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +0 -1
  1672. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +0 -1
  1673. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +0 -1
  1674. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +0 -1
  1675. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +0 -1
  1676. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +0 -1
  1677. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +0 -1
  1678. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +0 -1
  1679. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +0 -1
  1680. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.d.ts.map +0 -1
  1681. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js.map +0 -1
  1682. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.d.ts.map +0 -1
  1683. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js.map +0 -1
  1684. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.d.ts.map +0 -1
  1685. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js.map +0 -1
  1686. package/dist/planmagnet/pages/ProgramsProgramsPagePage.d.ts.map +0 -1
  1687. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js.map +0 -1
  1688. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +0 -1
  1689. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +0 -1
  1690. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +0 -1
  1691. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +0 -1
  1692. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.d.ts.map +0 -1
  1693. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js.map +0 -1
  1694. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.d.ts.map +0 -1
  1695. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js.map +0 -1
  1696. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +0 -1
  1697. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +0 -1
  1698. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.d.ts.map +0 -1
  1699. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js.map +0 -1
  1700. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.d.ts.map +0 -1
  1701. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js.map +0 -1
  1702. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +0 -1
  1703. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +0 -1
  1704. package/dist/planmagnet/pages/ProjectsGanttPagePage.d.ts.map +0 -1
  1705. package/dist/planmagnet/pages/ProjectsGanttPagePage.js.map +0 -1
  1706. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +0 -1
  1707. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +0 -1
  1708. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +0 -1
  1709. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +0 -1
  1710. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +0 -1
  1711. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +0 -1
  1712. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +0 -1
  1713. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +0 -1
  1714. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +0 -1
  1715. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +0 -1
  1716. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +0 -1
  1717. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +0 -1
  1718. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +0 -1
  1719. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +0 -1
  1720. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.d.ts.map +0 -1
  1721. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.js.map +0 -1
  1722. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.d.ts.map +0 -1
  1723. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.js.map +0 -1
  1724. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +0 -1
  1725. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js.map +0 -1
  1726. package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts.map +0 -1
  1727. package/dist/planmagnet/pages/ReportsEditReportPagePage.js.map +0 -1
  1728. package/dist/planmagnet/pages/ReportsReportPagePage.d.ts.map +0 -1
  1729. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +0 -1
  1730. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +0 -1
  1731. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +0 -1
  1732. package/dist/planmagnet/pages/RisksRiskDetailPagePage.d.ts.map +0 -1
  1733. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js.map +0 -1
  1734. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.d.ts.map +0 -1
  1735. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js.map +0 -1
  1736. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +0 -1
  1737. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +0 -1
  1738. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +0 -1
  1739. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +0 -1
  1740. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +0 -1
  1741. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +0 -1
  1742. package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +0 -1
  1743. package/dist/planmagnet/pages/TasksImportPagePage.js.map +0 -1
  1744. package/dist/planmagnet/pages/TasksMyDashboardPagePage.d.ts.map +0 -1
  1745. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js.map +0 -1
  1746. package/dist/planmagnet/pages/TasksMyWorkPagePage.d.ts.map +0 -1
  1747. package/dist/planmagnet/pages/TasksMyWorkPagePage.js.map +0 -1
  1748. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +0 -1
  1749. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +0 -1
  1750. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +0 -1
  1751. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +0 -1
  1752. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.d.ts.map +0 -1
  1753. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js.map +0 -1
  1754. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.d.ts.map +0 -1
  1755. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js.map +0 -1
  1756. package/dist/planmagnet/pages/TasksTimesheetsPagePage.d.ts.map +0 -1
  1757. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js.map +0 -1
  1758. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts.map +0 -1
  1759. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js.map +0 -1
  1760. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +0 -1
  1761. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +0 -1
  1762. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +0 -1
  1763. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +0 -1
  1764. package/dist/planmagnet/pages/TeamTeamEditPagePage.d.ts.map +0 -1
  1765. package/dist/planmagnet/pages/TeamTeamEditPagePage.js.map +0 -1
  1766. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +0 -1
  1767. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +0 -1
  1768. package/dist/planmagnet/pages/TeamTeamsListPagePage.d.ts.map +0 -1
  1769. package/dist/planmagnet/pages/TeamTeamsListPagePage.js.map +0 -1
  1770. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.d.ts.map +0 -1
  1771. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js.map +0 -1
  1772. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.d.ts.map +0 -1
  1773. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js.map +0 -1
  1774. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts.map +0 -1
  1775. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js.map +0 -1
  1776. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +0 -1
  1777. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +0 -1
  1778. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.d.ts.map +0 -1
  1779. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js.map +0 -1
  1780. package/dist/planmagnet/pages/analytics/MetricsCard.d.ts.map +0 -1
  1781. package/dist/planmagnet/pages/analytics/MetricsCard.js.map +0 -1
  1782. package/dist/planmagnet/pages/analytics/QualityMetricsCard.d.ts.map +0 -1
  1783. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js.map +0 -1
  1784. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +0 -1
  1785. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +0 -1
  1786. package/dist/planmagnet/pages/analytics/StatusFlowCard.d.ts.map +0 -1
  1787. package/dist/planmagnet/pages/analytics/StatusFlowCard.js.map +0 -1
  1788. package/dist/planmagnet/pages/analytics/ThroughputCard.d.ts.map +0 -1
  1789. package/dist/planmagnet/pages/analytics/ThroughputCard.js.map +0 -1
  1790. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.d.ts.map +0 -1
  1791. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js.map +0 -1
  1792. package/dist/planmagnet/pages/analytics/analyticsRange.d.ts.map +0 -1
  1793. package/dist/planmagnet/pages/analytics/analyticsRange.js.map +0 -1
  1794. package/dist/planmagnet/people/People.d.ts.map +0 -1
  1795. package/dist/planmagnet/people/People.js.map +0 -1
  1796. package/dist/planmagnet/presence/PresenceAvatars.d.ts.map +0 -1
  1797. package/dist/planmagnet/presence/PresenceAvatars.js.map +0 -1
  1798. package/dist/planmagnet/product/FeatureLinkPanels.d.ts.map +0 -1
  1799. package/dist/planmagnet/product/FeatureLinkPanels.js.map +0 -1
  1800. package/dist/planmagnet/product/ProductControls.d.ts.map +0 -1
  1801. package/dist/planmagnet/product/ProductControls.js.map +0 -1
  1802. package/dist/planmagnet/product/ProductFeatureControls.d.ts.map +0 -1
  1803. package/dist/planmagnet/product/ProductFeatureControls.js.map +0 -1
  1804. package/dist/planmagnet/product/ProductFeatureLinkCard.d.ts.map +0 -1
  1805. package/dist/planmagnet/product/ProductFeatureLinkCard.js.map +0 -1
  1806. package/dist/planmagnet/product/ProductLineControls.d.ts.map +0 -1
  1807. package/dist/planmagnet/product/ProductLineControls.js.map +0 -1
  1808. package/dist/planmagnet/product/ProductTeamsPanel.d.ts.map +0 -1
  1809. package/dist/planmagnet/product/ProductTeamsPanel.js.map +0 -1
  1810. package/dist/planmagnet/product/WorkItemProductFeatureChip.d.ts.map +0 -1
  1811. package/dist/planmagnet/product/WorkItemProductFeatureChip.js.map +0 -1
  1812. package/dist/planmagnet/product/hierarchy.d.ts.map +0 -1
  1813. package/dist/planmagnet/product/hierarchy.js.map +0 -1
  1814. package/dist/planmagnet/product/hierarchyOperations.d.ts.map +0 -1
  1815. package/dist/planmagnet/product/hierarchyOperations.js.map +0 -1
  1816. package/dist/planmagnet/product/refusal.d.ts.map +0 -1
  1817. package/dist/planmagnet/product/refusal.js.map +0 -1
  1818. package/dist/planmagnet/product/routes.d.ts.map +0 -1
  1819. package/dist/planmagnet/product/routes.js.map +0 -1
  1820. package/dist/planmagnet/providers/PlanMagnetProvider.d.ts.map +0 -1
  1821. package/dist/planmagnet/providers/PlanMagnetProvider.js.map +0 -1
  1822. package/dist/planmagnet/releases/ReleaseChecklistCard.d.ts.map +0 -1
  1823. package/dist/planmagnet/releases/ReleaseChecklistCard.js.map +0 -1
  1824. package/dist/planmagnet/releases/ReleaseGatesCard.d.ts.map +0 -1
  1825. package/dist/planmagnet/releases/ReleaseGatesCard.js.map +0 -1
  1826. package/dist/planmagnet/releases/ReleaseNotesCard.d.ts.map +0 -1
  1827. package/dist/planmagnet/releases/ReleaseNotesCard.js.map +0 -1
  1828. package/dist/planmagnet/releases/ReleaseReadinessCard.d.ts.map +0 -1
  1829. package/dist/planmagnet/releases/ReleaseReadinessCard.js.map +0 -1
  1830. package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +0 -1
  1831. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +0 -1
  1832. package/dist/planmagnet/releases/useReleaseOptions.d.ts.map +0 -1
  1833. package/dist/planmagnet/releases/useReleaseOptions.js.map +0 -1
  1834. package/dist/planmagnet/reports/ExportMenu.d.ts.map +0 -1
  1835. package/dist/planmagnet/reports/ExportMenu.js.map +0 -1
  1836. package/dist/planmagnet/reports/PrintReportView.d.ts.map +0 -1
  1837. package/dist/planmagnet/reports/PrintReportView.js.map +0 -1
  1838. package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts.map +0 -1
  1839. package/dist/planmagnet/reports/ReportBuilderCanvas.js.map +0 -1
  1840. package/dist/planmagnet/reports/ReportBuilderPage.d.ts.map +0 -1
  1841. package/dist/planmagnet/reports/ReportBuilderPage.js.map +0 -1
  1842. package/dist/planmagnet/reports/ReportRunHistory.d.ts.map +0 -1
  1843. package/dist/planmagnet/reports/ReportRunHistory.js.map +0 -1
  1844. package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts.map +0 -1
  1845. package/dist/planmagnet/reports/ReportWidgetRenderer.js.map +0 -1
  1846. package/dist/planmagnet/reports/SchedulesPanel.d.ts.map +0 -1
  1847. package/dist/planmagnet/reports/SchedulesPanel.js.map +0 -1
  1848. package/dist/planmagnet/reports/ShareDialog.d.ts.map +0 -1
  1849. package/dist/planmagnet/reports/ShareDialog.js.map +0 -1
  1850. package/dist/planmagnet/reports/SharedReportPage.d.ts.map +0 -1
  1851. package/dist/planmagnet/reports/SharedReportPage.js.map +0 -1
  1852. package/dist/planmagnet/reports/WidgetEditorDialog.d.ts.map +0 -1
  1853. package/dist/planmagnet/reports/WidgetEditorDialog.js.map +0 -1
  1854. package/dist/planmagnet/reports/reportExportPptx.d.ts.map +0 -1
  1855. package/dist/planmagnet/reports/reportExportPptx.js.map +0 -1
  1856. package/dist/planmagnet/reports/reportExportXlsx.d.ts.map +0 -1
  1857. package/dist/planmagnet/reports/reportExportXlsx.js.map +0 -1
  1858. package/dist/planmagnet/reports/reportGraphql.d.ts.map +0 -1
  1859. package/dist/planmagnet/reports/reportGraphql.js.map +0 -1
  1860. package/dist/planmagnet/reports/reportModel.d.ts.map +0 -1
  1861. package/dist/planmagnet/reports/reportModel.js.map +0 -1
  1862. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +0 -1
  1863. package/dist/planmagnet/reports/sharedReportRoute.js.map +0 -1
  1864. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.d.ts.map +0 -1
  1865. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.js.map +0 -1
  1866. package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +0 -1
  1867. package/dist/planmagnet/roadmaps/RoadmapControls.js.map +0 -1
  1868. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.d.ts.map +0 -1
  1869. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js.map +0 -1
  1870. package/dist/planmagnet/roadmaps/RoadmapPresentation.d.ts.map +0 -1
  1871. package/dist/planmagnet/roadmaps/RoadmapPresentation.js.map +0 -1
  1872. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.d.ts.map +0 -1
  1873. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js.map +0 -1
  1874. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.d.ts.map +0 -1
  1875. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js.map +0 -1
  1876. package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +0 -1
  1877. package/dist/planmagnet/roadmaps/planningFocus.js.map +0 -1
  1878. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.d.ts.map +0 -1
  1879. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js.map +0 -1
  1880. package/dist/planmagnet/satisfaction/SatisfactionFigures.d.ts.map +0 -1
  1881. package/dist/planmagnet/satisfaction/SatisfactionFigures.js.map +0 -1
  1882. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.d.ts.map +0 -1
  1883. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js.map +0 -1
  1884. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.d.ts.map +0 -1
  1885. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js.map +0 -1
  1886. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.d.ts.map +0 -1
  1887. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js.map +0 -1
  1888. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.d.ts.map +0 -1
  1889. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js.map +0 -1
  1890. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.d.ts.map +0 -1
  1891. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js.map +0 -1
  1892. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.d.ts.map +0 -1
  1893. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js.map +0 -1
  1894. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.d.ts.map +0 -1
  1895. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js.map +0 -1
  1896. package/dist/planmagnet/satisfaction/satisfaction.d.ts.map +0 -1
  1897. package/dist/planmagnet/satisfaction/satisfaction.js.map +0 -1
  1898. package/dist/planmagnet/satisfaction/satisfactionCsv.d.ts.map +0 -1
  1899. package/dist/planmagnet/satisfaction/satisfactionCsv.js.map +0 -1
  1900. package/dist/planmagnet/satisfaction/satisfactionForm.d.ts.map +0 -1
  1901. package/dist/planmagnet/satisfaction/satisfactionForm.js.map +0 -1
  1902. package/dist/planmagnet/satisfaction/satisfactionOperations.d.ts.map +0 -1
  1903. package/dist/planmagnet/satisfaction/satisfactionOperations.js.map +0 -1
  1904. package/dist/planmagnet/satisfaction/useSatisfactionAccess.d.ts.map +0 -1
  1905. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js.map +0 -1
  1906. package/dist/planmagnet/skills/RequiredSkillsEditor.d.ts.map +0 -1
  1907. package/dist/planmagnet/skills/RequiredSkillsEditor.js.map +0 -1
  1908. package/dist/planmagnet/skills/SkillChips.d.ts.map +0 -1
  1909. package/dist/planmagnet/skills/SkillChips.js.map +0 -1
  1910. package/dist/planmagnet/skills/SkillCoverageCard.d.ts.map +0 -1
  1911. package/dist/planmagnet/skills/SkillCoverageCard.js.map +0 -1
  1912. package/dist/planmagnet/skills/WorkItemRequiredSkills.d.ts.map +0 -1
  1913. package/dist/planmagnet/skills/WorkItemRequiredSkills.js.map +0 -1
  1914. package/dist/planmagnet/skills/skillOperations.d.ts.map +0 -1
  1915. package/dist/planmagnet/skills/skillOperations.js.map +0 -1
  1916. package/dist/planmagnet/skills/skillTags.d.ts.map +0 -1
  1917. package/dist/planmagnet/skills/skillTags.js.map +0 -1
  1918. package/dist/planmagnet/skills/useRequiredSkillsDraft.d.ts.map +0 -1
  1919. package/dist/planmagnet/skills/useRequiredSkillsDraft.js.map +0 -1
  1920. package/dist/planmagnet/sprints/SprintControls.d.ts.map +0 -1
  1921. package/dist/planmagnet/sprints/SprintControls.js.map +0 -1
  1922. package/dist/planmagnet/sprints/SprintDates.d.ts.map +0 -1
  1923. package/dist/planmagnet/sprints/SprintDates.js.map +0 -1
  1924. package/dist/planmagnet/store/planmagnetStore.d.ts.map +0 -1
  1925. package/dist/planmagnet/store/planmagnetStore.js.map +0 -1
  1926. package/dist/planmagnet/team/PendingInvitations.d.ts.map +0 -1
  1927. package/dist/planmagnet/team/PendingInvitations.js.map +0 -1
  1928. package/dist/planmagnet/team/TeamControls.d.ts.map +0 -1
  1929. package/dist/planmagnet/team/TeamControls.js.map +0 -1
  1930. package/dist/planmagnet/team/UnmatchedCrewIdentities.d.ts.map +0 -1
  1931. package/dist/planmagnet/team/UnmatchedCrewIdentities.js.map +0 -1
  1932. package/dist/planmagnet/team/invitationEmail.d.ts.map +0 -1
  1933. package/dist/planmagnet/team/invitationEmail.js.map +0 -1
  1934. package/dist/planmagnet/time/TaskTimePanel.d.ts.map +0 -1
  1935. package/dist/planmagnet/time/TaskTimePanel.js.map +0 -1
  1936. package/dist/planmagnet/time/TimeEntryControls.d.ts.map +0 -1
  1937. package/dist/planmagnet/time/TimeEntryControls.js.map +0 -1
  1938. package/dist/planmagnet/time/TimesheetControls.d.ts.map +0 -1
  1939. package/dist/planmagnet/time/TimesheetControls.js.map +0 -1
  1940. package/dist/planmagnet/time/timeShared.d.ts.map +0 -1
  1941. package/dist/planmagnet/time/timeShared.js.map +0 -1
  1942. package/dist/planmagnet/types/index.d.ts.map +0 -1
  1943. package/dist/planmagnet/utils/cn.d.ts.map +0 -1
  1944. package/dist/planmagnet/utils/cn.js.map +0 -1
  1945. package/dist/planmagnet/utils/email.d.ts.map +0 -1
  1946. package/dist/planmagnet/utils/email.js.map +0 -1
  1947. package/dist/planmagnet/utils/formValidation.d.ts.map +0 -1
  1948. package/dist/planmagnet/utils/formValidation.js.map +0 -1
  1949. package/dist/planmagnet/utils/graphqlErrors.d.ts.map +0 -1
  1950. package/dist/planmagnet/utils/graphqlErrors.js.map +0 -1
  1951. package/dist/planmagnet/utils/lineDiff.d.ts.map +0 -1
  1952. package/dist/planmagnet/utils/lineDiff.js.map +0 -1
  1953. package/dist/planmagnet/utils/mutationResult.d.ts.map +0 -1
  1954. package/dist/planmagnet/utils/mutationResult.js.map +0 -1
  1955. package/dist/planmagnet/utils/navigation.d.ts.map +0 -1
  1956. package/dist/planmagnet/utils/navigation.js.map +0 -1
  1957. package/dist/planmagnet/utils/qualityGateCriteria.d.ts.map +0 -1
  1958. package/dist/planmagnet/utils/qualityGateCriteria.js.map +0 -1
  1959. package/dist/planmagnet/utils/rowNavigation.d.ts.map +0 -1
  1960. package/dist/planmagnet/utils/rowNavigation.js.map +0 -1
  1961. package/dist/planmagnet/utils/statusColor.d.ts.map +0 -1
  1962. package/dist/planmagnet/utils/statusColor.js.map +0 -1
  1963. package/dist/planmagnet/utils/urlParam.d.ts.map +0 -1
  1964. package/dist/planmagnet/utils/urlParam.js.map +0 -1
  1965. package/dist/planmagnet/webhooks/webhookTypes.d.ts.map +0 -1
  1966. package/dist/planmagnet/webhooks/webhookTypes.js.map +0 -1
  1967. package/dist/shared/hooks/useTr.d.ts.map +0 -1
  1968. package/dist/shared/hooks/useTr.js.map +0 -1
  1969. package/dist/shared/utils/i18n.d.ts.map +0 -1
  1970. package/dist/shared/utils/i18n.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"AutomationRuleFields.js","names":[],"sources":["../../../src/planmagnet/automation/AutomationRuleFields.tsx"],"sourcesContent":["import { Button, Checkbox, Input, Textarea } from '@burdenoff/fe-libs/ui';\nimport { Plus, X } from 'lucide-react';\nimport {\n AssigneeSelect,\n WORK_ITEM_PRIORITIES,\n WORK_ITEM_STATUSES,\n enumLabel,\n} from '../controls/WorkItemControls';\nimport { ProjectSelect } from '../controls/Pickers';\nimport {\n ACTION_TYPES,\n ACTION_TYPE_LABEL,\n AUTOMATION_TEMPLATE_MAX_LENGTH,\n CHANNEL_POSTING_AVAILABLE,\n CHANNEL_POSTING_BLOCKED_MESSAGE,\n CHANNEL_POSTING_OPTION_REASON,\n CONDITION_FIELDS,\n CONDITION_OPERATORS,\n CONDITION_OPERATOR_LABEL,\n NO_WORK_ITEM_TRIGGER_TYPES,\n POST_COMMENT_MAX_RENDERED_LENGTH,\n TEMPLATE_PLACEHOLDER_INFO,\n TRIGGER_TYPES,\n TRIGGER_TYPE_LABEL,\n WORK_ITEM_ACTION_TYPES,\n parseScheduleDays,\n renderTemplatePreview,\n templatePlaceholdersForTrigger,\n templateSampleValues,\n triggerHint,\n triggerOptionSuffix,\n type ActionType,\n type ConditionOperator,\n type RuleAction,\n type RuleCondition,\n type TriggerType,\n} from './automationRuleTypes';\n\n/** The editable shape both the create and edit pages share. `conditions` is used for every trigger except\n * `SCHEDULE`, which has its own dedicated shape (`scheduleStatuses`/`scheduleNotUpdatedForDays`) — see\n * `automationRuleTypes.ts`'s `ScheduleConditions` doc comment for why it cannot reuse the generic editor. */\nexport interface AutomationRuleFormState {\n name: string;\n description: string;\n projectId: string;\n triggerType: TriggerType;\n conditions: RuleCondition[];\n scheduleStatuses: string[];\n scheduleNotUpdatedForDays: string;\n actions: RuleAction[];\n}\n\n// No width here: a native <select> does not go through tailwind-merge, so a `w-full` in a shared class and a\n// `w-32` added next to it BOTH land on the element and the stylesheet order decides — `w-full` won, the\n// operator / action-type selects took the whole row and squeezed the value input beside them to ~26px, so\n// nobody could see the value they typed. Rows size their own selects; `fieldClass` is the full-width form.\nconst fieldBaseClass =\n 'rounded-md border border-input bg-background px-3 py-2 text-sm disabled:opacity-60';\nconst fieldClass = `mt-1 w-full ${fieldBaseClass}`;\n\n// fe-libs' <Input> sets its own text color via `text-text-primary` (a semantic token from its own theme\n// scope), but every Input below sits in a row that also carries this file's OTHER token family\n// (`fieldClass` above uses `border-input`/`bg-background`, and the rest of this microfe standardizes on\n// `text-foreground`/`bg-background`/`border-input`). Passing this class merges via `cn()` (tailwind-merge),\n// which recognizes both `text-text-primary` and `text-foreground` as the same \"text color\" group and keeps\n// only the last one — so this pins every value/label an editor renders here to the token this microfe's own\n// pages already render correctly with, instead of leaving it to whichever token happens to win the cascade.\nconst inputTextClass = 'text-foreground';\n\n/** The POST_COMMENT template textarea + live character count + placeholder picker/help + rendered preview\n * (BOFF-8047 follow-up). `POST_TO_CHANNEL` never reaches this — it stays a disabled option (see `ActionValueEditor`\n * below) while `CHANNEL_POSTING_AVAILABLE` is false, so its own template UI is not built yet. */\nfunction TemplateEditor({\n value,\n triggerType,\n onChange,\n}: {\n value: string;\n triggerType: TriggerType;\n onChange: (value: string) => void;\n}) {\n const placeholders = templatePlaceholdersForTrigger(triggerType);\n const preview = renderTemplatePreview(\n value,\n templateSampleValues(triggerType),\n POST_COMMENT_MAX_RENDERED_LENGTH\n );\n\n const insert = (token: string) => onChange(`${value}{{${token}}}`);\n\n return (\n <div className=\"space-y-2\">\n <div>\n <Textarea\n aria-label=\"Comment template\"\n data-testid=\"automation-template\"\n className={`min-h-[72px] w-full ${inputTextClass}`}\n maxLength={AUTOMATION_TEMPLATE_MAX_LENGTH}\n placeholder=\"e.g. Automatically moved to {{toStatus}} by {{actor}}\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n />\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {value.length} / {AUTOMATION_TEMPLATE_MAX_LENGTH} characters\n </p>\n </div>\n <div>\n <p className=\"text-xs font-medium text-muted-foreground\">Insert a placeholder</p>\n <div data-testid=\"automation-placeholders\" className=\"mt-1 flex flex-wrap gap-1.5\">\n {placeholders.map((token) => (\n <button\n key={token}\n type=\"button\"\n onClick={() => insert(token)}\n title={`Insert {{${token}}} — ${TEMPLATE_PLACEHOLDER_INFO[token]?.label ?? token}`}\n className=\"rounded-full border border-input px-2 py-0.5 text-xs text-muted-foreground hover:bg-muted\"\n >\n {`{{${token}}}`}\n </button>\n ))}\n </div>\n </div>\n <div\n data-testid=\"automation-template-preview\"\n className=\"rounded-md border border-dashed border-input p-2 text-xs\"\n >\n <p className=\"font-medium text-foreground\">Preview</p>\n <p className=\"mt-0.5 whitespace-pre-wrap text-muted-foreground\">\n {preview || <span className=\"italic\">Nothing to show yet — write a template above.</span>}\n </p>\n </div>\n </div>\n );\n}\n\nfunction ActionValueEditor({\n action,\n triggerType,\n onChange,\n}: {\n action: RuleAction;\n triggerType: TriggerType;\n onChange: (value: string) => void;\n}) {\n switch (action.type) {\n case 'ASSIGN_TO_USER':\n return <AssigneeSelect value={action.value} onChange={onChange} />;\n case 'SET_STATUS':\n return (\n <select\n className={`${fieldBaseClass} w-full`}\n value={action.value}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">Choose a status</option>\n {WORK_ITEM_STATUSES.map((s) => (\n <option key={s} value={s}>\n {enumLabel(s)}\n </option>\n ))}\n </select>\n );\n case 'SET_PRIORITY':\n return (\n <select\n className={`${fieldBaseClass} w-full`}\n value={action.value}\n onChange={(e) => onChange(e.target.value)}\n >\n <option value=\"\">Choose a priority</option>\n {WORK_ITEM_PRIORITIES.map((p) => (\n <option key={p} value={p}>\n {enumLabel(p)}\n </option>\n ))}\n </select>\n );\n case 'POST_COMMENT':\n return <TemplateEditor value={action.value} triggerType={triggerType} onChange={onChange} />;\n case 'POST_TO_CHANNEL':\n // Gated off (BOFF-8240): still shown, never editable into something savable. `action.value`/`channelId` on\n // an existing rule (saved before this UI existed, or via the API directly) stays visible read-only rather\n // than vanishing, but `saveBlockReason` refuses to save the form while this action is present.\n return (\n <div className=\"space-y-1\">\n <Input\n aria-label=\"Channel message template (read-only — not available yet)\"\n className={inputTextClass}\n value={action.value}\n disabled\n readOnly\n />\n <p className=\"text-xs text-destructive\">{CHANNEL_POSTING_BLOCKED_MESSAGE}</p>\n </div>\n );\n case 'ADD_LABEL':\n default:\n return (\n <Input\n aria-label=\"Label\"\n className={inputTextClass}\n placeholder=\"e.g. needs-review\"\n value={action.value}\n onChange={(e) => onChange(e.target.value)}\n />\n );\n }\n}\n\n/** The actions builder: the five types the engine can dispatch, trigger-aware (BOFF-8047 follow-up —\n * automationRuleTypes.ts's header has the full scope). `POST_TO_CHANNEL` is always visible but disabled (gated\n * off, BOFF-8240). For a trigger in `NO_WORK_ITEM_TRIGGER_TYPES` (the sprint and release triggers), no work-item\n * action can ever dispatch — existing rows stay visible (and removable) so a rule saved before this restriction\n * existed can still be cleaned up, but they are frozen and no new one can be added. */\nexport function ActionsEditor({\n actions,\n triggerType,\n onChange,\n}: {\n actions: RuleAction[];\n triggerType: TriggerType;\n onChange: (next: RuleAction[]) => void;\n}) {\n const noWorkItem = NO_WORK_ITEM_TRIGGER_TYPES.has(triggerType);\n const update = (index: number, patch: Partial<RuleAction>) =>\n onChange(actions.map((a, i) => (i === index ? { ...a, ...patch } : a)));\n const remove = (index: number) => onChange(actions.filter((_, i) => i !== index));\n const add = () => onChange([...actions, { type: 'ASSIGN_TO_USER', value: '' }]);\n\n return (\n <div className=\"space-y-2\">\n {noWorkItem && (\n <p className=\"text-xs text-muted-foreground\">\n This trigger has no target work item, so none of the actions below can run for it. Remove\n any left over from before this restriction existed, or switch to a different trigger.\n </p>\n )}\n {actions.map((action, index) => {\n // A rule created before this UI existed (or via the API directly) can carry an action type this\n // builder does not offer. Keep it selectable and visible rather than silently swapping it out from\n // under the user the moment they open the edit page.\n const known = (ACTION_TYPES as readonly string[]).includes(action.type);\n const typeOptions = known ? ACTION_TYPES : [action.type, ...ACTION_TYPES];\n const frozen = noWorkItem && WORK_ITEM_ACTION_TYPES.has(action.type);\n return (\n <div key={index} className=\"space-y-1\">\n <div className=\"flex items-start gap-2\">\n <select\n aria-label=\"Action type\"\n data-testid=\"automation-action-type\"\n className={`${fieldBaseClass} w-40 shrink-0`}\n value={action.type}\n disabled={frozen}\n onChange={(e) =>\n update(index, {\n type: e.target.value as ActionType,\n value: e.target.value === action.type ? action.value : '',\n })\n }\n >\n {typeOptions.map((t) => {\n const isChannel = t === 'POST_TO_CHANNEL';\n const disabled = isChannel && !CHANNEL_POSTING_AVAILABLE;\n const label =\n known || t !== action.type ? (ACTION_TYPE_LABEL[t as ActionType] ?? t) : t;\n return (\n <option key={t} value={t} disabled={disabled}>\n {disabled ? `${label} — ${CHANNEL_POSTING_OPTION_REASON}` : label}\n </option>\n );\n })}\n </select>\n <div className=\"min-w-0 flex-1\">\n <ActionValueEditor\n action={action}\n triggerType={triggerType}\n onChange={(value) => update(index, { value })}\n />\n </div>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n aria-label=\"Remove action\"\n onClick={() => remove(index)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n {!known && (\n <p className=\"text-xs text-muted-foreground\">\n This action type is not run by the engine yet; the rule keeps it but never\n dispatches it.\n </p>\n )}\n </div>\n );\n })}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={add}\n disabled={noWorkItem}\n title={\n noWorkItem ? 'This trigger has no target work item — no action can be added.' : undefined\n }\n data-testid=\"automation-add-action\"\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n Add action\n </Button>\n {actions.length === 0 && !noWorkItem && (\n <p className=\"text-xs text-muted-foreground\">\n A rule with no actions still records that it ran, but changes nothing.\n </p>\n )}\n </div>\n );\n}\n\n/** The conditions builder. A rule with no conditions always matches — the gate is opt-in (engine default). Used\n * for every trigger except `SCHEDULE` — see `ScheduleConditionsEditor` below. */\nexport function ConditionsEditor({\n conditions,\n onChange,\n}: {\n conditions: RuleCondition[];\n onChange: (next: RuleCondition[]) => void;\n}) {\n const update = (index: number, patch: Partial<RuleCondition>) =>\n onChange(conditions.map((c, i) => (i === index ? { ...c, ...patch } : c)));\n const remove = (index: number) => onChange(conditions.filter((_, i) => i !== index));\n const add = () => onChange([...conditions, { field: 'status', operator: 'eq', value: '' }]);\n\n return (\n <div className=\"space-y-2\">\n {conditions.map((condition, index) => (\n <div key={index} className=\"flex items-start gap-2\">\n <Input\n aria-label=\"Condition field\"\n list=\"automation-condition-fields\"\n className={`w-36 shrink-0 ${inputTextClass}`}\n placeholder=\"field\"\n value={condition.field}\n onChange={(e) => update(index, { field: e.target.value })}\n />\n <select\n aria-label=\"Condition operator\"\n className={`${fieldBaseClass} w-32 shrink-0`}\n value={condition.operator}\n onChange={(e) => update(index, { operator: e.target.value as ConditionOperator })}\n >\n {CONDITION_OPERATORS.map((op) => (\n <option key={op} value={op}>\n {CONDITION_OPERATOR_LABEL[op]}\n </option>\n ))}\n </select>\n {condition.operator !== 'exists' && (\n <Input\n aria-label=\"Condition value\"\n className={`min-w-0 flex-1 ${inputTextClass}`}\n placeholder={\n condition.operator === 'in' || condition.operator === 'notIn'\n ? 'comma, separated, values'\n : 'value'\n }\n value={condition.value}\n onChange={(e) => update(index, { value: e.target.value })}\n />\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n aria-label=\"Remove condition\"\n onClick={() => remove(index)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <datalist id=\"automation-condition-fields\">\n {CONDITION_FIELDS.map((f) => (\n <option key={f} value={f} />\n ))}\n </datalist>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={add}\n data-testid=\"automation-add-condition\"\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n Add condition\n </Button>\n {conditions.length === 0 && (\n <p className=\"text-xs text-muted-foreground\">\n No conditions: the rule matches every event.\n </p>\n )}\n </div>\n );\n}\n\n/** The SCHEDULE trigger's own condition editor (AUT-27): statuses (multi-select of `WorkItemStatus`) + \"not\n * updated for N days\", writing exactly the `{ status, notUpdatedForDays }` shape `parseScheduleConditions`\n * (automation-scheduler.ts) reads — never the generic field/operator/value array. */\nexport function ScheduleConditionsEditor({\n statuses,\n days,\n onStatusesChange,\n onDaysChange,\n}: {\n statuses: string[];\n days: string;\n onStatusesChange: (next: string[]) => void;\n onDaysChange: (next: string) => void;\n}) {\n const toggle = (status: string) =>\n onStatusesChange(\n statuses.includes(status) ? statuses.filter((s) => s !== status) : [...statuses, status]\n );\n const parsedDays = parseScheduleDays(days);\n\n return (\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-sm font-medium\">Statuses</p>\n <div\n data-testid=\"automation-schedule-statuses\"\n role=\"group\"\n aria-label=\"Statuses to watch\"\n className=\"mt-1 flex flex-wrap gap-2\"\n >\n {WORK_ITEM_STATUSES.map((s) => (\n <label\n key={s}\n className=\"flex items-center gap-1.5 rounded-md border border-input px-2 py-1 text-sm\"\n >\n <Checkbox\n checked={statuses.includes(s)}\n onCheckedChange={() => toggle(s)}\n aria-label={enumLabel(s)}\n />\n {enumLabel(s)}\n </label>\n ))}\n </div>\n {statuses.length === 0 && (\n <p className=\"mt-1 text-xs text-destructive\">Choose at least one status.</p>\n )}\n </div>\n <div>\n <label htmlFor=\"automation-schedule-days\" className=\"text-sm font-medium\">\n Not updated for (days)\n </label>\n <Input\n id=\"automation-schedule-days\"\n data-testid=\"automation-schedule-days\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n className={`mt-1 w-28 ${inputTextClass}`}\n value={days}\n onChange={(e) => onDaysChange(e.target.value)}\n placeholder=\"e.g. 7\"\n />\n {days !== '' && parsedDays === null && (\n <p className=\"mt-1 text-xs text-destructive\">Enter a whole number of days, 1 or more.</p>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Runs once a day against every work item matching these statuses and staleness window, and\n acts on each matching item at most once per day.\n </p>\n </div>\n );\n}\n\n/** Name, description, project, trigger, conditions and actions — the fields create and edit share. */\nexport function AutomationRuleFields({\n form,\n onChange,\n projectLocked = false,\n}: {\n form: AutomationRuleFormState;\n onChange: (next: AutomationRuleFormState) => void;\n /** The edit page cannot change the project (the API accepts no `projectId` on update). */\n projectLocked?: boolean;\n}) {\n const hint = triggerHint(form.triggerType);\n const isSchedule = form.triggerType === 'SCHEDULE';\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label htmlFor=\"automation-name\" className=\"text-sm font-medium\">\n Name\n </label>\n <Input\n id=\"automation-name\"\n className={`mt-1 ${inputTextClass}`}\n value={form.name}\n onChange={(e) => onChange({ ...form, name: e.target.value })}\n placeholder=\"e.g. Assign new bugs to triage\"\n />\n </div>\n <div>\n <label htmlFor=\"automation-description\" className=\"text-sm font-medium\">\n Description\n </label>\n <textarea\n id=\"automation-description\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[72px]\"\n value={form.description}\n onChange={(e) => onChange({ ...form, description: e.target.value })}\n placeholder=\"What this rule is for\"\n />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label htmlFor=\"automation-project\" className=\"text-sm font-medium\">\n Project\n </label>\n {projectLocked ? (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n A rule&apos;s project cannot be changed after it is created.\n </p>\n ) : (\n <div className=\"mt-1\">\n <ProjectSelect\n id=\"automation-project\"\n value={form.projectId}\n onChange={(projectId) => onChange({ ...form, projectId })}\n />\n </div>\n )}\n </div>\n <div>\n <label htmlFor=\"automation-trigger\" className=\"text-sm font-medium\">\n Trigger\n </label>\n <select\n id=\"automation-trigger\"\n className={fieldClass}\n value={form.triggerType}\n onChange={(e) => onChange({ ...form, triggerType: e.target.value as TriggerType })}\n >\n {TRIGGER_TYPES.map((t) => (\n <option key={t} value={t}>\n {TRIGGER_TYPE_LABEL[t]}\n {triggerOptionSuffix(t)}\n </option>\n ))}\n </select>\n {hint && (\n <p\n data-testid=\"automation-trigger-hint\"\n className={`mt-1 text-xs ${NO_WORK_ITEM_TRIGGER_TYPES.has(form.triggerType) ? 'text-destructive' : 'text-muted-foreground'}`}\n >\n {hint}\n </p>\n )}\n </div>\n </div>\n <div>\n <p className=\"text-sm font-medium\">{isSchedule ? 'Schedule conditions' : 'Conditions'}</p>\n <p className=\"mb-2 text-xs text-muted-foreground\">\n {isSchedule\n ? 'Which work items this schedule watches.'\n : 'All conditions must match. Leave empty to match every event.'}\n </p>\n {isSchedule ? (\n <ScheduleConditionsEditor\n statuses={form.scheduleStatuses}\n days={form.scheduleNotUpdatedForDays}\n onStatusesChange={(scheduleStatuses) => onChange({ ...form, scheduleStatuses })}\n onDaysChange={(scheduleNotUpdatedForDays) =>\n onChange({ ...form, scheduleNotUpdatedForDays })\n }\n />\n ) : (\n <ConditionsEditor\n conditions={form.conditions}\n onChange={(conditions) => onChange({ ...form, conditions })}\n />\n )}\n </div>\n <div>\n <p className=\"text-sm font-medium\">Actions</p>\n <p className=\"mb-2 text-xs text-muted-foreground\">\n Run in order when the conditions match.\n </p>\n <ActionsEditor\n actions={form.actions}\n triggerType={form.triggerType}\n onChange={(actions) => onChange({ ...form, actions })}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAwDA,IAAM,IACJ,sFACI,IAAa,eAAe,KAS5B,IAAiB;AAKvB,SAAS,EAAe,EACtB,UACA,gBACA,eAKC;CACD,IAAM,IAAe,EAA+B,EAAY,EAC1D,IAAU,EACd,GACA,EAAqB,EAAY,EACjC,EACD,EAEK,KAAU,MAAkB,EAAS,GAAG,EAAM,IAAI,EAAM,IAAI;AAElE,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IACE,cAAW;IACX,eAAY;IACZ,WAAW,uBAAuB;IAClC,WAAW;IACX,aAAY;IACL;IACP,WAAW,MAAM,EAAS,EAAE,OAAO,MAAM;IACzC,CAAA,EACF,kBAAC,KAAD;IAAG,WAAU;cAAb;KACG,EAAM;KAAO;KAAI;KAA+B;KAC/C;MACA,EAAA,CAAA;GACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAA4C;IAAwB,CAAA,EACjF,kBAAC,OAAD;IAAK,eAAY;IAA0B,WAAU;cAClD,EAAa,KAAK,MACjB,kBAAC,UAAD;KAEE,MAAK;KACL,eAAe,EAAO,EAAM;KAC5B,OAAO,YAAY,EAAM,OAAO,EAA0B,IAAQ,SAAS;KAC3E,WAAU;eAET,KAAK,EAAM;KACL,EAPF,EAOE,CACT;IACE,CAAA,CACF,EAAA,CAAA;GACN,kBAAC,OAAD;IACE,eAAY;IACZ,WAAU;cAFZ,CAIE,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAAW,CAAA,EACtD,kBAAC,KAAD;KAAG,WAAU;eACV,KAAW,kBAAC,QAAD;MAAM,WAAU;gBAAS;MAAoD,CAAA;KACvF,CAAA,CACA;;GACF;;;AAIV,SAAS,EAAkB,EACzB,WACA,gBACA,eAKC;AACD,SAAQ,EAAO,MAAf;EACE,KAAK,iBACH,QAAO,kBAAC,GAAD;GAAgB,OAAO,EAAO;GAAiB;GAAY,CAAA;EACpE,KAAK,aACH,QACE,kBAAC,UAAD;GACE,WAAW,GAAG,EAAe;GAC7B,OAAO,EAAO;GACd,WAAW,MAAM,EAAS,EAAE,OAAO,MAAM;aAH3C,CAKE,kBAAC,UAAD;IAAQ,OAAM;cAAG;IAAwB,CAAA,EACxC,EAAmB,KAAK,MACvB,kBAAC,UAAD;IAAgB,OAAO;cACpB,EAAU,EAAE;IACN,EAFI,EAEJ,CACT,CACK;;EAEb,KAAK,eACH,QACE,kBAAC,UAAD;GACE,WAAW,GAAG,EAAe;GAC7B,OAAO,EAAO;GACd,WAAW,MAAM,EAAS,EAAE,OAAO,MAAM;aAH3C,CAKE,kBAAC,UAAD;IAAQ,OAAM;cAAG;IAA0B,CAAA,EAC1C,EAAqB,KAAK,MACzB,kBAAC,UAAD;IAAgB,OAAO;cACpB,EAAU,EAAE;IACN,EAFI,EAEJ,CACT,CACK;;EAEb,KAAK,eACH,QAAO,kBAAC,GAAD;GAAgB,OAAO,EAAO;GAAoB;GAAuB;GAAY,CAAA;EAC9F,KAAK,kBAIH,QACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IACE,cAAW;IACX,WAAW;IACX,OAAO,EAAO;IACd,UAAA;IACA,UAAA;IACA,CAAA,EACF,kBAAC,KAAD;IAAG,WAAU;cAA4B;IAAoC,CAAA,CACzE;;EAGV,QACE,QACE,kBAAC,GAAD;GACE,cAAW;GACX,WAAW;GACX,aAAY;GACZ,OAAO,EAAO;GACd,WAAW,MAAM,EAAS,EAAE,OAAO,MAAM;GACzC,CAAA;;;AAUV,SAAgB,EAAc,EAC5B,YACA,gBACA,eAKC;CACD,IAAM,IAAa,EAA2B,IAAI,EAAY,EACxD,KAAU,GAAe,MAC7B,EAAS,EAAQ,KAAK,GAAG,MAAO,MAAM,IAAQ;EAAE,GAAG;EAAG,GAAG;EAAO,GAAG,EAAG,CAAC,EACnE,KAAU,MAAkB,EAAS,EAAQ,QAAQ,GAAG,MAAM,MAAM,EAAM,CAAC;AAGjF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,KACC,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAGzC,CAAA;GAEL,EAAQ,KAAK,GAAQ,MAAU;IAI9B,IAAM,IAAS,EAAmC,SAAS,EAAO,KAAK,EACjE,IAAc,IAAQ,IAAe,CAAC,EAAO,MAAM,GAAG,EAAa,EACnE,IAAS,KAAc,EAAuB,IAAI,EAAO,KAAK;AACpE,WACE,kBAAC,OAAD;KAAiB,WAAU;eAA3B,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,UAAD;QACE,cAAW;QACX,eAAY;QACZ,WAAW,GAAG,EAAe;QAC7B,OAAO,EAAO;QACd,UAAU;QACV,WAAW,MACT,EAAO,GAAO;SACZ,MAAM,EAAE,OAAO;SACf,OAAO,EAAE,OAAO,UAAU,EAAO,OAAO,EAAO,QAAQ;SACxD,CAAC;kBAGH,EAAY,KAAK,MAAM;SAEtB,IAAM,IADY,MAAM,qBACM,IACxB,IACJ,KAAS,MAAM,EAAO,OAAQ,EAAkB,MAAoB,IAAK;AAC3E,gBACE,kBAAC,UAAD;UAAgB,OAAO;UAAa;oBACjC,IAAW,GAAG,EAAM,KAAK,MAAkC;UACrD,EAFI,EAEJ;UAEX;QACK,CAAA;OACT,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAAC,GAAD;SACU;SACK;SACb,WAAW,MAAU,EAAO,GAAO,EAAE,UAAO,CAAC;SAC7C,CAAA;QACE,CAAA;OACN,kBAAC,GAAD;QACE,MAAK;QACL,MAAK;QACL,SAAQ;QACR,cAAW;QACX,eAAe,EAAO,EAAM;kBAE5B,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;QAClB,CAAA;OACL;SACL,CAAC,KACA,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAGzC,CAAA,CAEF;OAlDI,EAkDJ;KAER;GACF,kBAAC,GAAD;IACE,MAAK;IACL,MAAK;IACL,SAAQ;IACR,eA3EY,EAAS,CAAC,GAAG,GAAS;KAAE,MAAM;KAAkB,OAAO;KAAI,CAAC,CAAC;IA4EzE,UAAU;IACV,OACE,IAAa,mEAAmE,KAAA;IAElF,eAAY;cATd,CAWE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,aAE1B;;GACR,EAAQ,WAAW,KAAK,CAAC,KACxB,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAEzC,CAAA;GAEF;;;AAMV,SAAgB,EAAiB,EAC/B,eACA,eAIC;CACD,IAAM,KAAU,GAAe,MAC7B,EAAS,EAAW,KAAK,GAAG,MAAO,MAAM,IAAQ;EAAE,GAAG;EAAG,GAAG;EAAO,GAAG,EAAG,CAAC,EACtE,KAAU,MAAkB,EAAS,EAAW,QAAQ,GAAG,MAAM,MAAM,EAAM,CAAC;AAGpF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,EAAW,KAAK,GAAW,MAC1B,kBAAC,OAAD;IAAiB,WAAU;cAA3B;KACE,kBAAC,GAAD;MACE,cAAW;MACX,MAAK;MACL,WAAW,iBAAiB;MAC5B,aAAY;MACZ,OAAO,EAAU;MACjB,WAAW,MAAM,EAAO,GAAO,EAAE,OAAO,EAAE,OAAO,OAAO,CAAC;MACzD,CAAA;KACF,kBAAC,UAAD;MACE,cAAW;MACX,WAAW,GAAG,EAAe;MAC7B,OAAO,EAAU;MACjB,WAAW,MAAM,EAAO,GAAO,EAAE,UAAU,EAAE,OAAO,OAA4B,CAAC;gBAEhF,EAAoB,KAAK,MACxB,kBAAC,UAAD;OAAiB,OAAO;iBACrB,EAAyB;OACnB,EAFI,EAEJ,CACT;MACK,CAAA;KACR,EAAU,aAAa,YACtB,kBAAC,GAAD;MACE,cAAW;MACX,WAAW,kBAAkB;MAC7B,aACE,EAAU,aAAa,QAAQ,EAAU,aAAa,UAClD,6BACA;MAEN,OAAO,EAAU;MACjB,WAAW,MAAM,EAAO,GAAO,EAAE,OAAO,EAAE,OAAO,OAAO,CAAC;MACzD,CAAA;KAEJ,kBAAC,GAAD;MACE,MAAK;MACL,MAAK;MACL,SAAQ;MACR,cAAW;MACX,eAAe,EAAO,EAAM;gBAE5B,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;MAClB,CAAA;KACL;MA3CI,EA2CJ,CACN;GACF,kBAAC,YAAD;IAAU,IAAG;cACV,EAAiB,KAAK,MACrB,kBAAC,UAAD,EAAgB,OAAO,GAAK,EAAf,EAAe,CAC5B;IACO,CAAA;GACX,kBAAC,GAAD;IACE,MAAK;IACL,MAAK;IACL,SAAQ;IACR,eA3DY,EAAS,CAAC,GAAG,GAAY;KAAE,OAAO;KAAU,UAAU;KAAM,OAAO;KAAI,CAAC,CAAC;IA4DrF,eAAY;cALd,CAOE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,gBAE1B;;GACR,EAAW,WAAW,KACrB,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAEzC,CAAA;GAEF;;;AAOV,SAAgB,EAAyB,EACvC,aACA,SACA,qBACA,mBAMC;CACD,IAAM,KAAU,MACd,EACE,EAAS,SAAS,EAAO,GAAG,EAAS,QAAQ,MAAM,MAAM,EAAO,GAAG,CAAC,GAAG,GAAU,EAAO,CACzF,EACG,IAAa,EAAkB,EAAK;AAE1C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,KAAD;KAAG,WAAU;eAAsB;KAAY,CAAA;IAC/C,kBAAC,OAAD;KACE,eAAY;KACZ,MAAK;KACL,cAAW;KACX,WAAU;eAET,EAAmB,KAAK,MACvB,kBAAC,SAAD;MAEE,WAAU;gBAFZ,CAIE,kBAAC,GAAD;OACE,SAAS,EAAS,SAAS,EAAE;OAC7B,uBAAuB,EAAO,EAAE;OAChC,cAAY,EAAU,EAAE;OACxB,CAAA,EACD,EAAU,EAAE,CACP;QATD,EASC,CACR;KACE,CAAA;IACL,EAAS,WAAW,KACnB,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAA+B,CAAA;IAE1E,EAAA,CAAA;GACN,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,SAAD;KAAO,SAAQ;KAA2B,WAAU;eAAsB;KAElE,CAAA;IACR,kBAAC,GAAD;KACE,IAAG;KACH,eAAY;KACZ,WAAU;KACV,SAAQ;KACR,WAAW,aAAa;KACxB,OAAO;KACP,WAAW,MAAM,EAAa,EAAE,OAAO,MAAM;KAC7C,aAAY;KACZ,CAAA;IACD,MAAS,MAAM,MAAe,QAC7B,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAA4C,CAAA;IAEvF,EAAA,CAAA;GACN,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAGzC,CAAA;GACA;;;AAKV,SAAgB,EAAqB,EACnC,SACA,aACA,mBAAgB,MAMf;CACD,IAAM,IAAO,EAAY,EAAK,YAAY,EACpC,IAAa,EAAK,gBAAgB;AAExC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;IAAO,SAAQ;IAAkB,WAAU;cAAsB;IAEzD,CAAA,EACR,kBAAC,GAAD;IACE,IAAG;IACH,WAAW,QAAQ;IACnB,OAAO,EAAK;IACZ,WAAW,MAAM,EAAS;KAAE,GAAG;KAAM,MAAM,EAAE,OAAO;KAAO,CAAC;IAC5D,aAAY;IACZ,CAAA,CACE,EAAA,CAAA;GACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;IAAO,SAAQ;IAAyB,WAAU;cAAsB;IAEhE,CAAA,EACR,kBAAC,YAAD;IACE,IAAG;IACH,WAAU;IACV,OAAO,EAAK;IACZ,WAAW,MAAM,EAAS;KAAE,GAAG;KAAM,aAAa,EAAE,OAAO;KAAO,CAAC;IACnE,aAAY;IACZ,CAAA,CACE,EAAA,CAAA;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;KAAO,SAAQ;KAAqB,WAAU;eAAsB;KAE5D,CAAA,EACP,IACC,kBAAC,KAAD;KAAG,WAAU;eAAqC;KAE9C,CAAA,GAEJ,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,IAAG;MACH,OAAO,EAAK;MACZ,WAAW,MAAc,EAAS;OAAE,GAAG;OAAM;OAAW,CAAC;MACzD,CAAA;KACE,CAAA,CAEJ,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA;KACE,kBAAC,SAAD;MAAO,SAAQ;MAAqB,WAAU;gBAAsB;MAE5D,CAAA;KACR,kBAAC,UAAD;MACE,IAAG;MACH,WAAW;MACX,OAAO,EAAK;MACZ,WAAW,MAAM,EAAS;OAAE,GAAG;OAAM,aAAa,EAAE,OAAO;OAAsB,CAAC;gBAEjF,EAAc,KAAK,MAClB,kBAAC,UAAD;OAAgB,OAAO;iBAAvB,CACG,EAAmB,IACnB,EAAoB,EAAE,CAChB;SAHI,EAGJ,CACT;MACK,CAAA;KACR,KACC,kBAAC,KAAD;MACE,eAAY;MACZ,WAAW,gBAAgB,EAA2B,IAAI,EAAK,YAAY,GAAG,qBAAqB;gBAElG;MACC,CAAA;KAEF,EAAA,CAAA,CACF;;GACN,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,KAAD;KAAG,WAAU;eAAuB,IAAa,wBAAwB;KAAiB,CAAA;IAC1F,kBAAC,KAAD;KAAG,WAAU;eACV,IACG,4CACA;KACF,CAAA;IACH,IACC,kBAAC,GAAD;KACE,UAAU,EAAK;KACf,MAAM,EAAK;KACX,mBAAmB,MAAqB,EAAS;MAAE,GAAG;MAAM;MAAkB,CAAC;KAC/E,eAAe,MACb,EAAS;MAAE,GAAG;MAAM;MAA2B,CAAC;KAElD,CAAA,GAEF,kBAAC,GAAD;KACE,YAAY,EAAK;KACjB,WAAW,MAAe,EAAS;MAAE,GAAG;MAAM;MAAY,CAAC;KAC3D,CAAA;IAEA,EAAA,CAAA;GACN,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,KAAD;KAAG,WAAU;eAAsB;KAAW,CAAA;IAC9C,kBAAC,KAAD;KAAG,WAAU;eAAqC;KAE9C,CAAA;IACJ,kBAAC,GAAD;KACE,SAAS,EAAK;KACd,aAAa,EAAK;KAClB,WAAW,MAAY,EAAS;MAAE,GAAG;MAAM;MAAS,CAAC;KACrD,CAAA;IACE,EAAA,CAAA;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"automationRuleTypes.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/automation/automationRuleTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,eAAO,MAAM,aAAa,mNAYhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAY1D,CAAC;AAEF;;uDAEuD;AACvD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;gGAEgG;AAChG,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,WAAW,CAU3D,CAAC;AAEH;;;;sCAIsC;AACtC,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,WAAW,CAAwB,CAAC;AAElF;+EAC+E;AAC/E,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,WAAW,CAI9D,CAAC;AAEH,kHAAkH;AAClH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAMhE;AAED;6GAC6G;AAC7G,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAoB/D;AAED,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,YAAY,2GAOf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOxD,CAAC;AAEF;gHACgH;AAChH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,UAAU,CAMzD,CAAC;AAEH;;gHAEgH;AAChH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,wDAAwD;AACxD,eAAO,MAAM,6BAA6B,0DAAqD,CAAC;AAChG;sFACsF;AACtF,eAAO,MAAM,+BAA+B,uEAC0B,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,uFAWtB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAWtE,CAAC;AAEF;sHACsH;AACtH,eAAO,MAAM,gBAAgB,qHAUnB,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAIzF;AAED;yFACyF;AACzF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,aAAa,EAAE,GAC1B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,SAAS,CAiB/E;AAED,2HAA2H;AAC3H,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,EAAE,CAc/D;AAED;mHACmH;AACnH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAQzD;AAaD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;mEACmE;AACnE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED;;kCAEkC;AAClC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAY5F;AAED;;sCAEsC;AACtC,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,kBAAkB,GAAG,SAAS,CAIhC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvF;AASD;qCACqC;AACrC,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AACpD,+GAA+G;AAC/G,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AACtD,wGAAwG;AACxG,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAkBvD;oFACoF;AACpF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1C,SAAS,EAAE,MAAM,GAChB,MAAM,CAQR;AAED;oFACoF;AACpF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CASvF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,MAAM,EAAE,CAiBtF;AAED;8FAC8F;AAC9F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAM7F;AAOD;0GAC0G;AAC1G,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;mHAEmH;AACnH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;CACnC,GAAG,MAAM,GAAG,IAAI,CAahB;AASD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAMjF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"automationRuleTypes.js","names":[],"sources":["../../../src/planmagnet/automation/automationRuleTypes.ts"],"sourcesContent":["/**\n * Automation rules (BOFF-8047). Shared trigger/condition/action vocabulary, kept in one place so the create\n * page, the edit page and the list's summaries can never drift from each other or from the engine.\n *\n * Scope note, rewritten from the real engine (wspace-planmagnet-svc `src/modules/automation/services/\n * automation-engine.ts` + `automation-scheduler.ts`, both merged and prod-verified — svc PR #64), and updated\n * for AUT-27/35 against the Hive-refreshed schema (`graphql/wspace.graphql`'s `PlanmagnetAutomationTriggerType`\n * doc comments): `WORK_ITEM_UPDATED` and `MILESTONE_DUE` are now REAL dispatchers too, not inert placeholders.\n *\n * - Triggers that fire AUTOMATICALLY: `WORK_ITEM_CREATED`, `WORK_ITEM_STATUS_CHANGED`, `WORK_ITEM_ASSIGNED`\n * (from every WorkItem write that changes status/assignee), `WORK_ITEM_UPDATED` (AUT-27: any field edit\n * through `WorkItemService.update()`'s general path — fires ALONGSIDE `WORK_ITEM_STATUS_CHANGED`/\n * `WORK_ITEM_ASSIGNED` on an edit that also touches status/assignee, not instead of them; the dispatcher does\n * not diff old vs new, so a save that writes back identical values still fires it — see `triggerHint`),\n * `SPRINT_STARTED`/`SPRINT_COMPLETED` (a sprint transition), `RELEASE_RELEASED` (a release's real transition\n * into RELEASED — not a re-send), `MILESTONE_DUE` (AUT-27: a rule's own Milestone falls due today, checked\n * once per `automation-scheduler.ts` tick — same cadence as `SCHEDULE`, no extra condition shape of its own)\n * and `SCHEDULE` (a daily background scan — see `automation-scheduler.ts`, NOT dispatched from a write path\n * at all). Still a real, accepted, saved schema value but INERT — never fires on its own — is `WEBHOOK`,\n * pending the public-gateway route (BOFF-8238). `MANUAL` is not inert, it is intentionally manual-only: it\n * runs only via \"Run now\" (`planmagnetExecuteAutomationRule`), which works for a rule of ANY trigger type\n * because it targets one named work item directly instead of listening for an event.\n * - Dispatchable actions: `ASSIGN_TO_USER`, `ADD_LABEL`, `SET_STATUS`, `SET_PRIORITY` (the four WorkItem\n * fields an automation can mutate), `POST_COMMENT` (a templated comment on the triggering work item,\n * authored by the fixed `automation:engine` identity — see `AUTOMATION_ACTOR_NAMES` in `../people/People`)\n * and `POST_TO_CHANNEL` (a templated message to a Conversations channel) — but `POST_TO_CHANNEL` is gated\n * OFF in prod (`isChannelPostingEnabled()` in the engine) until Platform ticket BOFF-8240 ships: saving one\n * is refused server-side with \"Posting to a chat channel from an automation is not available yet\", so this\n * UI never lets it be selected or saved either (see `CHANNEL_POSTING_AVAILABLE` below).\n * - `SPRINT_STARTED`/`SPRINT_COMPLETED`/`RELEASE_RELEASED` carry NO target work item (`sprint.service.ts`/\n * `release.service.ts` never set `workItemId` on their `TriggerData`), so every work-item action — all five\n * above except `POST_TO_CHANNEL` — cannot run for them. Today that leaves such a rule able to do nothing\n * (the only action that *could* apply, `POST_TO_CHANNEL`, is itself gated off), so the builder below refuses\n * to offer work-item actions for these triggers and blocks Save entirely rather than let someone build a\n * rule that silently never fires anything.\n */\n\nexport const TRIGGER_TYPES = [\n 'WORK_ITEM_CREATED',\n 'WORK_ITEM_STATUS_CHANGED',\n 'WORK_ITEM_ASSIGNED',\n 'SPRINT_STARTED',\n 'SPRINT_COMPLETED',\n 'RELEASE_RELEASED',\n 'SCHEDULE',\n 'WORK_ITEM_UPDATED',\n 'MILESTONE_DUE',\n 'WEBHOOK',\n 'MANUAL',\n] as const;\nexport type TriggerType = (typeof TRIGGER_TYPES)[number];\n\nexport const TRIGGER_TYPE_LABEL: Record<TriggerType, string> = {\n WORK_ITEM_CREATED: 'Work item created',\n WORK_ITEM_STATUS_CHANGED: 'Work item status changed',\n WORK_ITEM_ASSIGNED: 'Work item assigned',\n SPRINT_STARTED: 'Sprint started',\n SPRINT_COMPLETED: 'Sprint completed',\n RELEASE_RELEASED: 'Release shipped',\n SCHEDULE: 'Schedule',\n WORK_ITEM_UPDATED: 'Work item updated',\n MILESTONE_DUE: 'Milestone due',\n WEBHOOK: 'Webhook',\n MANUAL: 'Manual only',\n};\n\n/** Looks up a trigger type's label; falls back to the raw value for one this UI does not yet know (forward\n * compatible with a value the service adds later). Cast: `TRIGGER_TYPE_LABEL` is keyed by the known union, but\n * a value read back from the API is a plain string. */\nexport function triggerTypeLabel(value: string): string {\n return (TRIGGER_TYPE_LABEL as Record<string, string>)[value] ?? value;\n}\n\n/** Fires on its own — dispatched from a real write path or a daily scheduler tick (automation-engine.ts's\n * `AutomationTriggerType` union, now 9 values as of AUT-27/35). Everything else in `TRIGGER_TYPES` is either\n * inert (accepted, saved, never fires — `WEBHOOK`) or intentionally manual-only (`MANUAL`). */\nexport const AUTOMATIC_TRIGGER_TYPES: ReadonlySet<TriggerType> = new Set([\n 'WORK_ITEM_CREATED',\n 'WORK_ITEM_STATUS_CHANGED',\n 'WORK_ITEM_ASSIGNED',\n 'WORK_ITEM_UPDATED',\n 'SPRINT_STARTED',\n 'SPRINT_COMPLETED',\n 'RELEASE_RELEASED',\n 'MILESTONE_DUE',\n 'SCHEDULE',\n]);\n\n/** Accepted and saved (so a rule can be prepared ahead of a future engine change) but never fires on its own —\n * no dispatcher call site exists yet for this value (automation-engine.ts's header). Distinct from `MANUAL`,\n * which is deliberately manual-only rather than an unfinished trigger. AUT-27/35: `WORK_ITEM_UPDATED` and\n * `MILESTONE_DUE` graduated out of this set once their real dispatchers shipped — see `AUTOMATIC_TRIGGER_TYPES`\n * and this file's header comment. */\nexport const INERT_TRIGGER_TYPES: ReadonlySet<TriggerType> = new Set(['WEBHOOK']);\n\n/** Fires automatically but its `TriggerData` never carries a `workItemId` (sprint.service.ts / release.service.ts\n * build it without one) — so no work-item action can ever dispatch for it. */\nexport const NO_WORK_ITEM_TRIGGER_TYPES: ReadonlySet<TriggerType> = new Set([\n 'SPRINT_STARTED',\n 'SPRINT_COMPLETED',\n 'RELEASE_RELEASED',\n]);\n\n/** The trigger-select option suffix — mirrors what the rule can actually do, not just whether it is automatic. */\nexport function triggerOptionSuffix(trigger: TriggerType): string {\n if (trigger === 'SCHEDULE' || trigger === 'MILESTONE_DUE') return ' (runs daily)';\n if (NO_WORK_ITEM_TRIGGER_TYPES.has(trigger)) return ' (no target work item)';\n if (INERT_TRIGGER_TYPES.has(trigger)) return ' (not yet automatic)';\n if (trigger === 'MANUAL') return ' (run manually)';\n return '';\n}\n\n/** The explanatory note shown under the trigger select — `null` for a trigger that needs no caveat (an\n * ordinary automatic, work-item-bearing trigger). Rendered with `data-testid=\"automation-trigger-hint\"`. */\nexport function triggerHint(trigger: TriggerType): string | null {\n if (NO_WORK_ITEM_TRIGGER_TYPES.has(trigger)) {\n return 'This trigger fires automatically, but it has no target work item — only \"Post to a channel\" could apply, and that is not available yet (waiting on a platform change). A rule with this trigger cannot do anything right now, so it cannot be saved yet.';\n }\n if (trigger === 'SCHEDULE') {\n return 'Runs once a day against every work item matching the statuses and staleness window below, and acts on each matching item at most once per day.';\n }\n if (trigger === 'WORK_ITEM_UPDATED') {\n return 'Fires on any field edit, including a save that writes back exactly the values it already had — the dispatcher does not check whether anything actually changed. Fires alongside \"Work item status changed\" / \"Work item assigned\" on an edit that also touches status or assignee, not instead of them.';\n }\n if (trigger === 'MILESTONE_DUE') {\n return \"Runs once a day for a rule whose Milestone's due date is today — same daily check as Schedule, but with no extra condition shape of its own: use the conditions below as you would for any other trigger.\";\n }\n if (INERT_TRIGGER_TYPES.has(trigger)) {\n return 'This trigger is saved but does not fire on its own yet — use Run now to run it against a work item.';\n }\n if (trigger === 'MANUAL') {\n return 'Manual rules never fire on their own — use Run now to run this rule against a work item.';\n }\n return null;\n}\n\nexport const RULE_STATUSES = ['ACTIVE', 'PAUSED', 'DISABLED', 'ERROR'] as const;\nexport type RuleStatus = (typeof RULE_STATUSES)[number];\n\nexport const ACTION_TYPES = [\n 'ASSIGN_TO_USER',\n 'ADD_LABEL',\n 'SET_STATUS',\n 'SET_PRIORITY',\n 'POST_COMMENT',\n 'POST_TO_CHANNEL',\n] as const;\nexport type ActionType = (typeof ACTION_TYPES)[number];\n\nexport const ACTION_TYPE_LABEL: Record<ActionType, string> = {\n ASSIGN_TO_USER: 'Assign to user',\n ADD_LABEL: 'Add label',\n SET_STATUS: 'Set status',\n SET_PRIORITY: 'Set priority',\n POST_COMMENT: 'Post a comment',\n POST_TO_CHANNEL: 'Post to a channel',\n};\n\n/** Every action that mutates/comments on the triggering WORK ITEM (automation-engine.ts's `dispatchAction`: only\n * `POST_TO_CHANNEL` is handled without one). These are the actions `NO_WORK_ITEM_TRIGGER_TYPES` cannot run. */\nexport const WORK_ITEM_ACTION_TYPES: ReadonlySet<ActionType> = new Set([\n 'ASSIGN_TO_USER',\n 'ADD_LABEL',\n 'SET_STATUS',\n 'SET_PRIORITY',\n 'POST_COMMENT',\n]);\n\n/** `POST_TO_CHANNEL` is gated off (BOFF-8240) — mirrors `isChannelPostingEnabled()` in automation-engine.ts,\n * which this frontend has no way to read directly (it is a server env flag). Flip this only once that ships\n * AND the option below is meant to become selectable — until then it stays visible but disabled everywhere. */\nexport const CHANNEL_POSTING_AVAILABLE = false;\n/** Short reason shown on the disabled option itself. */\nexport const CHANNEL_POSTING_OPTION_REASON = 'Not available yet — waiting on a platform change';\n/** The engine's own refusal message (`automation.errors.channelPostingUnavailable`), reused so a blocked save\n * never contradicts what the server would say if the block were somehow bypassed. */\nexport const CHANNEL_POSTING_BLOCKED_MESSAGE =\n 'Posting to a chat channel from an automation is not available yet.';\n\nexport interface RuleAction {\n type: ActionType;\n value: string;\n}\n\nexport const CONDITION_OPERATORS = [\n 'eq',\n 'neq',\n 'in',\n 'notIn',\n 'contains',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'exists',\n] as const;\nexport type ConditionOperator = (typeof CONDITION_OPERATORS)[number];\n\nexport const CONDITION_OPERATOR_LABEL: Record<ConditionOperator, string> = {\n eq: 'is',\n neq: 'is not',\n in: 'is one of',\n notIn: 'is not one of',\n contains: 'contains',\n gt: '>',\n gte: '>=',\n lt: '<',\n lte: '<=',\n exists: 'is set',\n};\n\n/** Fields present on every automatic trigger's snapshot (`TriggerData` in automation-engine.ts). Only meaningful\n * for non-`SCHEDULE` triggers — `SCHEDULE` has its own dedicated condition shape, see `ScheduleConditions` below. */\nexport const CONDITION_FIELDS = [\n 'status',\n 'previousStatus',\n 'priority',\n 'type',\n 'assigneeId',\n 'title',\n 'labels',\n 'sprintId',\n 'projectId',\n] as const;\n\nexport interface RuleCondition {\n field: string;\n operator: ConditionOperator;\n /** Raw editor value; for `in`/`notIn` this is a comma-separated list, converted to an array on submit. */\n value: string;\n}\n\n/** actions[] (form shape) -> actions JSON the API accepts. Never emits a `POST_TO_CHANNEL` action — nothing in\n * this builder can produce one while `CHANNEL_POSTING_AVAILABLE` is false (see `saveBlockReason`, which refuses\n * to save a form that somehow still carries one). */\nexport function actionsToApi(actions: RuleAction[]): { type: ActionType; value: string }[] {\n return actions\n .filter((a) => a.value.trim() !== '')\n .map((a) => ({ type: a.type, value: a.value.trim() }));\n}\n\n/** conditions[] (form shape) -> conditions JSON the API accepts, or undefined when there are none. Only used for\n * non-`SCHEDULE` triggers — see `scheduleConditionsToApi` for `SCHEDULE`'s own shape. */\nexport function conditionsToApi(\n conditions: RuleCondition[]\n): { field: string; operator: ConditionOperator; value?: unknown }[] | undefined {\n const usable = conditions.filter((c) => c.field.trim() !== '');\n if (usable.length === 0) return undefined;\n return usable.map((c) => {\n if (c.operator === 'exists') return { field: c.field.trim(), operator: c.operator };\n if (c.operator === 'in' || c.operator === 'notIn') {\n return {\n field: c.field.trim(),\n operator: c.operator,\n value: c.value\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean),\n };\n }\n return { field: c.field.trim(), operator: c.operator, value: c.value };\n });\n}\n\n/** API conditions JSON -> form shape, for the edit page. Unrecognised shapes are dropped rather than crashing the form. */\nexport function conditionsFromApi(raw: unknown): RuleCondition[] {\n if (!Array.isArray(raw)) return [];\n return raw\n .filter(\n (v): v is { field: string; operator: string; value?: unknown } =>\n !!v && typeof v === 'object' && typeof (v as { field?: unknown }).field === 'string'\n )\n .map((c) => ({\n field: c.field,\n operator: (CONDITION_OPERATORS as readonly string[]).includes(c.operator)\n ? (c.operator as ConditionOperator)\n : 'eq',\n value: Array.isArray(c.value) ? c.value.join(', ') : c.value == null ? '' : String(c.value),\n }));\n}\n\n/** API actions JSON -> form shape, for the edit page. Action types this builder does not offer are kept (so an\n * existing rule's own configuration is never silently dropped by opening the edit page) but shown as read-only. */\nexport function actionsFromApi(raw: unknown): RuleAction[] {\n if (!Array.isArray(raw)) return [];\n return raw\n .filter(\n (v): v is { type: string; value?: unknown } =>\n !!v && typeof v === 'object' && typeof (v as { type?: unknown }).type === 'string'\n )\n .map((a) => ({ type: a.type as ActionType, value: a.value == null ? '' : String(a.value) }));\n}\n\n// ============================================================================\n// SCHEDULE conditions (AUT-27) — a DIFFERENT shape from the field/operator/value array above.\n//\n// automation-scheduler.ts's `parseScheduleConditions` reads a SCHEDULE rule's `conditions` as the plain object\n// `{ status: string[] (non-empty), notUpdatedForDays: number > 0 }`: which statuses are candidates, and how many\n// days since a matching item last changed before the rule considers it stale. Anything else (missing, an empty\n// status list, a non-positive/non-numeric window) makes the scheduler skip the rule silently every tick — so this\n// form gates Save on the same shape being valid, rather than letting a SCHEDULE rule be saved in a way that never\n// runs.\n// ============================================================================\n\nexport interface ScheduleConditions {\n status: string[];\n notUpdatedForDays: number;\n}\n\n/** A whole number of days, 1 or more — a stricter (but compatible) subset of the engine's own `number > 0` check,\n * chosen because \"half a day\" has no sensible UI meaning here. */\nexport function parseScheduleDays(raw: string): number | null {\n const trimmed = raw.trim();\n if (!/^\\d+$/.test(trimmed)) return null;\n const n = Number(trimmed);\n return n >= 1 ? n : null;\n}\n\n/** API `conditions` JSON -> the SCHEDULE editor's own form fields. Lenient (shows whatever is there, even if it\n * would fail `parseScheduleConditions` server-side) so an existing malformed rule can still be opened and fixed,\n * rather than silently reset. */\nexport function scheduleConditionsFromApi(raw: unknown): { statuses: string[]; days: string } {\n if (!raw || typeof raw !== 'object') return { statuses: [], days: '' };\n const status = (raw as Record<string, unknown>).status;\n const notUpdatedForDays = (raw as Record<string, unknown>).notUpdatedForDays;\n const statuses = Array.isArray(status)\n ? status.filter((s): s is string => typeof s === 'string')\n : [];\n const days =\n typeof notUpdatedForDays === 'number' && Number.isFinite(notUpdatedForDays)\n ? String(notUpdatedForDays)\n : '';\n return { statuses, days };\n}\n\n/** The SCHEDULE editor's own form fields -> exactly the `{ status, notUpdatedForDays }` shape\n * `parseScheduleConditions` reads. `undefined` when not yet valid — callers gate Save on this instead of ever\n * submitting an unreadable value. */\nexport function scheduleConditionsToApi(\n statuses: string[],\n daysText: string\n): ScheduleConditions | undefined {\n const days = parseScheduleDays(daysText);\n if (statuses.length === 0 || days === null) return undefined;\n return { status: statuses, notUpdatedForDays: days };\n}\n\nexport function isScheduleConditionsValid(statuses: string[], daysText: string): boolean {\n return statuses.length > 0 && parseScheduleDays(daysText) !== null;\n}\n\n// ============================================================================\n// POST_COMMENT / POST_TO_CHANNEL templating — mirrors automation-engine.ts's `renderAutomationTemplate` +\n// `buildAutomationTemplateValues` for a client-side PREVIEW only. The server re-renders for real at dispatch\n// time against the live trigger data; this never substitutes for that, it only shows what the template would\n// look like with representative sample values.\n// ============================================================================\n\n/** `AUTOMATION_TEMPLATE_MAX_LENGTH` in automation-engine.ts — the longest a template's raw `value` may be,\n * checked at rule create/update. */\nexport const AUTOMATION_TEMPLATE_MAX_LENGTH = 2_000;\n/** `POST_COMMENT_MAX_RENDERED_LENGTH` in automation-engine.ts — the longest a RENDERED comment body may be. */\nexport const POST_COMMENT_MAX_RENDERED_LENGTH = 2_000;\n/** `POST_TO_CHANNEL_MAX_RENDERED_LENGTH` in automation-engine.ts — shorter, matching a chat message. */\nexport const POST_TO_CHANNEL_MAX_RENDERED_LENGTH = 500;\n\nconst TEMPLATE_PLACEHOLDER_RE = /\\{\\{\\s*([a-zA-Z][a-zA-Z0-9_.]*)\\s*\\}\\}/g;\n\n/** Mirrors `escapeAutomationTemplateValue` in automation-engine.ts: a substituted value never carries a raw\n * control character or the exact bracket/paren characters CWF-13's `@[Name](actorId)` mention token uses. */\nfunction escapeTemplateValue(value: string): string {\n let out = '';\n for (const ch of value) {\n const code = ch.codePointAt(0) ?? 0;\n out +=\n code <= 0x1f || code === 0x7f || ch === '[' || ch === ']' || ch === '(' || ch === ')'\n ? ' '\n : ch;\n }\n return out.trim();\n}\n\n/** Mirrors `renderAutomationTemplate` in automation-engine.ts: an unknown or unpopulated `{{key}}` renders empty,\n * the result is trimmed, and it is truncated (with an ellipsis) to `maxLength`. */\nexport function renderTemplatePreview(\n template: string,\n values: Record<string, string | undefined>,\n maxLength: number\n): string {\n const rendered = template.replace(TEMPLATE_PLACEHOLDER_RE, (_match, key: string) => {\n const raw = values[key];\n return raw === undefined ? '' : escapeTemplateValue(raw);\n });\n const trimmed = rendered.trim();\n if (trimmed.length <= maxLength) return trimmed;\n return `${trimmed.slice(0, Math.max(0, maxLength - 1))}…`;\n}\n\n/** Every placeholder token `buildAutomationTemplateValues` (automation-engine.ts) knows how to fill, with a\n * short label for the picker and a representative sample value for the preview. */\nexport const TEMPLATE_PLACEHOLDER_INFO: Record<string, { label: string; sample: string }> = {\n 'workItem.key': { label: 'Work item key', sample: 'PM-42' },\n 'workItem.title': { label: 'Work item title', sample: 'Fix checkout crash' },\n fromStatus: { label: 'Previous status', sample: 'In Progress' },\n toStatus: { label: 'New status', sample: 'Done' },\n actor: { label: 'Actor', sample: 'Jane Doe' },\n 'sprint.name': { label: 'Sprint name', sample: 'Sprint 14' },\n 'release.version': { label: 'Release version', sample: '2026.930.1' },\n 'release.name': { label: 'Release name', sample: 'September release' },\n};\n\n/**\n * Exactly which placeholders will actually render something (non-empty) for a POST_COMMENT/POST_TO_CHANNEL\n * template on a rule of this trigger type — read from `buildAutomationTemplateValues` plus every call site that\n * builds a `TriggerData` for it (`workitem.service.ts`'s `toTriggerData`/`fireAutomationTrigger`,\n * `sprint.service.ts`'s `fireSprintAutomationTrigger`, `release.service.ts`'s `fireReleaseAutomationTrigger`,\n * `automation-scheduler.ts`'s `toScheduleTriggerData`, and `automation.service.ts`'s `execute()` for \"Run now\",\n * which every inert/manual trigger relies on):\n *\n * - `SPRINT_STARTED`/`SPRINT_COMPLETED`: `{ projectId, sprintId, sprintName }` only — no work item, no status.\n * - `RELEASE_RELEASED`: `{ projectId, releaseId, releaseVersion, releaseName }` only — no work item, no status.\n * - `WORK_ITEM_STATUS_CHANGED`: the only automatic trigger that sets `previousStatus` (to the status before the\n * write) alongside the new `status` — every other trigger either omits it or sets it to `null`.\n * - `WORK_ITEM_CREATED`/`WORK_ITEM_ASSIGNED`/`SCHEDULE` carry the work item's key/title/status but never a\n * `fromStatus` — their real dispatch paths (`workitem.service.ts`'s `toTriggerData`, `automation-scheduler.ts`'s\n * `toScheduleTriggerData`) both set `key: item.key` from the live row.\n * - `WORK_ITEM_UPDATED`/`MILESTONE_DUE`/`WEBHOOK`/`MANUAL` are the same \"work item title/status, no fromStatus\"\n * shape MINUS `workItem.key`. This was originally true because none of the four had a real dispatcher and\n * every run went through `automation.service.ts#execute()` (`RunAutomationRuleDialog`'s `{ workItemId }` plus\n * a fresh `prisma.workItem` read, which never assigns `key`). AUT-27/35 gave `WORK_ITEM_UPDATED` and\n * `MILESTONE_DUE` real dispatchers (see this file's header and `AUTOMATIC_TRIGGER_TYPES`), but absent a\n * confirmed look at their real `TriggerData` shape in automation-engine.ts/automation-scheduler.ts, this\n * preview deliberately keeps the same, narrower placeholder set rather than guessing that `workItem.key` is\n * now populated — offering a placeholder this preview cannot confirm renders would risk showing a template\n * that silently renders empty at real dispatch time, for a preview whose whole job is to show that correctly.\n * `WEBHOOK` and `MANUAL` keep this shape for the original reason (no real dispatcher at all).\n *\n * `actor` is always populated (the real triggering actor, `AUTOMATION_SCHEDULER_ACTOR_ID` for SCHEDULE, or the\n * \"Run now\" caller) so it is available for every trigger.\n */\nexport function templatePlaceholdersForTrigger(trigger: TriggerType): readonly string[] {\n if (trigger === 'SPRINT_STARTED' || trigger === 'SPRINT_COMPLETED')\n return ['sprint.name', 'actor'];\n if (trigger === 'RELEASE_RELEASED') return ['release.version', 'release.name', 'actor'];\n if (trigger === 'WORK_ITEM_STATUS_CHANGED')\n return ['workItem.key', 'workItem.title', 'fromStatus', 'toStatus', 'actor'];\n // WORK_ITEM_UPDATED/MILESTONE_DUE are no longer in INERT_TRIGGER_TYPES (AUT-27/35 gave them real dispatchers)\n // but are named explicitly here too — see the doc comment above for why this preview keeps their placeholder\n // set unchanged rather than assuming `workItem.key` is now populated.\n if (\n trigger === 'WORK_ITEM_UPDATED' ||\n trigger === 'MILESTONE_DUE' ||\n INERT_TRIGGER_TYPES.has(trigger) ||\n trigger === 'MANUAL'\n )\n return ['workItem.title', 'toStatus', 'actor'];\n return ['workItem.key', 'workItem.title', 'toStatus', 'actor'];\n}\n\n/** Sample values for exactly the placeholders `templatePlaceholdersForTrigger` says apply to this trigger — any\n * other `{{...}}` in the template previews empty, matching what the real engine would do. */\nexport function templateSampleValues(trigger: TriggerType): Record<string, string | undefined> {\n const values: Record<string, string | undefined> = {};\n for (const token of templatePlaceholdersForTrigger(trigger)) {\n values[token] = TEMPLATE_PLACEHOLDER_INFO[token]?.sample;\n }\n return values;\n}\n\n// ============================================================================\n// Save gating — a rule this builder would otherwise let someone save but that can never do anything, or that\n// carries an action this engine refuses to dispatch.\n// ============================================================================\n\n/** `null` when this trigger needs no explanation blocking Save; the reason string otherwise (same text as\n * `triggerHint` for a `NO_WORK_ITEM_TRIGGER_TYPES` trigger — the one case that blocks Save outright). */\nexport function triggerSaveBlockReason(trigger: TriggerType): string | null {\n return NO_WORK_ITEM_TRIGGER_TYPES.has(trigger) ? triggerHint(trigger) : null;\n}\n\n/** Combines every reason a rule form cannot be saved yet: a trigger with no possible action, a `POST_TO_CHANNEL`\n * action while channel posting is gated off, or (for `SCHEDULE`) a not-yet-valid schedule window. `null` means\n * the form is save-able as far as these rules are concerned (the caller still checks name/project separately). */\nexport function saveBlockReason(form: {\n triggerType: TriggerType;\n actions: RuleAction[];\n scheduleStatuses: string[];\n scheduleNotUpdatedForDays: string;\n}): string | null {\n const triggerReason = triggerSaveBlockReason(form.triggerType);\n if (triggerReason) return triggerReason;\n if (!CHANNEL_POSTING_AVAILABLE && form.actions.some((a) => a.type === 'POST_TO_CHANNEL')) {\n return CHANNEL_POSTING_BLOCKED_MESSAGE;\n }\n if (\n form.triggerType === 'SCHEDULE' &&\n !isScheduleConditionsValid(form.scheduleStatuses, form.scheduleNotUpdatedForDays)\n ) {\n return 'Choose at least one status and a whole number of days (1 or more) before saving this schedule.';\n }\n return null;\n}\n\n// ============================================================================\n// Execution errors — automation-engine.ts's `errorMessage` is one `'; '`-joined string (each action's\n// `\"<label>: <message>\"`, plus an optional \"N declared action(s) are not supported…\" summary). There is no\n// structured per-action array in the API (`PlanmagnetAutomationExecution.result` only carries\n// `dispatched`/`skipped`/counts — see the schema), so this is the best available split of what the API returns.\n// ============================================================================\n\nexport function splitExecutionErrors(message: string | null | undefined): string[] {\n if (!message) return [];\n return message\n .split('; ')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoardViewBar.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/board/BoardViewBar.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAqBL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EAInB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5C,IAAI,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,EAAE,SAAS,cAAc,EAAE,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;CACvB;AAoBD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,OAAO,EACP,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACnD,2CAihBA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoardViewBar.js","names":[],"sources":["../../../src/planmagnet/board/BoardViewBar.tsx"],"sourcesContent":["import { useDeferredValue, useEffect, useState } from 'react';\nimport { useMutation } from '@apollo/client/react';\nimport {\n Badge,\n Button,\n Checkbox,\n Input,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { Pencil, Save, Share2, Trash2, X } from 'lucide-react';\nimport { PersonName } from '../people/People';\nimport { throwOnError } from '../utils/mutationResult';\nimport { ConfirmButton, ErrorLine } from '../controls/ConfirmButton';\nimport { enumLabel, useAssigneeOptions, WORK_ITEM_PRIORITIES } from '../controls/WorkItemControls';\nimport type { MilestoneOption } from '../milestones/MilestoneControls';\nimport {\n CREATE_BOARD_VIEW,\n DELETE_BOARD_VIEW,\n DEFAULT_VISIBLE_FIELDS,\n GROUP_BY_OPTIONS,\n SORT_FIELD_OPTIONS,\n UPDATE_BOARD_VIEW,\n VIEW_REFETCH,\n VISIBLE_FIELD_OPTIONS,\n WORK_ITEM_TYPES,\n configFromView,\n configsEqual,\n configToInput,\n defaultConfig,\n emptyFilter,\n filterToGraphQLInput,\n isFilterActive,\n readViewIdFromUrl,\n useBoardViews,\n usePlanMagnet,\n writeViewIdToUrl,\n type BoardCardField,\n type BoardGroupBy,\n type BoardSortField,\n type BoardView,\n type BoardViewConfigState,\n type BoardViewVisibility,\n type SortDirection,\n type SprintOption,\n} from './boardViewConfig';\n\n/**\n * Board views (PDM-N04): a view bar above the board — pick a saved view (or \"All cards\"), tune its filter, sort,\n * group-by and visible fields, and save/update/rename/share/delete it. Every field it shows is passed to the\n * board's own card queries as `filter`/`sort` (server-side), so this bar never filters a page in the browser.\n */\n\nexport interface AppliedBoardState {\n filter: Record<string, unknown> | undefined;\n sort: { field: BoardSortField; direction: SortDirection };\n groupBy: BoardGroupBy;\n visibleFields: readonly BoardCardField[];\n filterActive: boolean;\n}\n\nfunction toGraphQLState(config: BoardViewConfigState): AppliedBoardState {\n return {\n filter: filterToGraphQLInput(config.filter),\n sort: { field: config.sort.field, direction: config.sort.direction },\n groupBy: config.groupBy,\n visibleFields: config.visibleFields.length > 0 ? config.visibleFields : DEFAULT_VISIBLE_FIELDS,\n filterActive: isFilterActive(config.filter),\n };\n}\n\nconst fieldClass =\n 'rounded-md border border-input bg-background px-2 py-1 text-sm disabled:opacity-60';\nconst labelClass = 'text-xs font-medium text-muted-foreground';\n\nfunction messageOf(e: unknown, fallback: string): string {\n return e instanceof Error ? e.message : fallback;\n}\n\nexport function BoardViewBar({\n projectId,\n boardId,\n onSelectBoard,\n sprintOptions,\n milestoneOptions,\n onStateChange,\n}: {\n projectId: string;\n boardId: string;\n onSelectBoard: (boardId: string) => void;\n sprintOptions: SprintOption[];\n milestoneOptions: MilestoneOption[];\n onStateChange: (state: AppliedBoardState) => void;\n}) {\n const { workspaceId } = usePlanMagnet();\n const { views, loading: viewsLoading, error: viewsError } = useBoardViews(workspaceId, projectId);\n\n const [appliedViewId, setAppliedViewId] = useState<string | null>(() => readViewIdFromUrl());\n const [initializedFromUrl, setInitializedFromUrl] = useState(false);\n const [config, setConfig] = useState<BoardViewConfigState>(defaultConfig);\n const [labelDraft, setLabelDraft] = useState('');\n const [unavailableNotice, setUnavailableNotice] = useState<string | null>(null);\n const [actionError, setActionError] = useState<string | null>(null);\n\n const appliedView = appliedViewId ? (views.find((v) => v.id === appliedViewId) ?? null) : null;\n\n // Resolve a `?view=` from the URL once the list has loaded — a view not found there is either deleted or\n // someone else's private view (the list already carries every view this caller may use), so fall back quietly.\n // Only LOCAL state is set here, directly during render, the same \"derive from a value a query resolved\" pattern\n // ProjectBoard's own `selectionBoardId` uses: `initializedFromUrl` makes this branch fire exactly once, right\n // after the first load, rather than on every `views` refetch. Notifying the parent which board to show is a\n // real external effect (see below), not a local-state update, so it does not belong in this block.\n if (!initializedFromUrl && !viewsLoading) {\n setInitializedFromUrl(true);\n if (appliedViewId) {\n const found = views.find((v) => v.id === appliedViewId);\n if (found) {\n setConfig(configFromView(found));\n } else {\n setAppliedViewId(null);\n writeViewIdToUrl(null);\n setUnavailableNotice('That view is no longer available — showing all cards.');\n }\n }\n }\n\n // The config sent to the board's own (server-side) card queries is deferred, so a fast typist filling in the\n // search box does not fire a new query on every keystroke; every other read of `config` below (the view select,\n // the \"unsaved changes\" hint, the controls themselves) stays on the immediate value so typing still feels instant.\n const deferredConfig = useDeferredValue(config);\n useEffect(() => {\n onStateChange(toGraphQLState(deferredConfig));\n }, [deferredConfig, onStateChange]);\n\n // The applied view's own board (when it names one) drives which board ProjectBoard shows — a real external\n // system (the parent's own state), so this belongs in an effect rather than the render-phase block above. Keyed\n // on the id, not the view object, so a `views` refetch that leaves the same board named does not re-fire it.\n const appliedBoardId = appliedView?.boardId ?? null;\n useEffect(() => {\n if (appliedBoardId) onSelectBoard(appliedBoardId);\n }, [appliedBoardId, onSelectBoard]);\n\n const applyView = (view: BoardView | null) => {\n setActionError(null);\n setUnavailableNotice(null);\n setAppliedViewId(view?.id ?? null);\n writeViewIdToUrl(view?.id ?? null);\n setConfig(view ? configFromView(view) : defaultConfig());\n };\n\n const patchFilter = (patch: Partial<BoardViewConfigState['filter']>) =>\n setConfig((c) => ({ ...c, filter: { ...c.filter, ...patch } }));\n const toggleInArray = (key: 'assigneeIds' | 'types' | 'priorities', value: string) =>\n setConfig((c) => {\n const list = c.filter[key];\n const next = list.includes(value) ? list.filter((v) => v !== value) : [...list, value];\n return { ...c, filter: { ...c.filter, [key]: next } };\n });\n const addLabel = () => {\n const value = labelDraft.trim();\n if (!value) return;\n setLabelDraft('');\n if (!config.filter.labels.includes(value))\n patchFilter({ labels: [...config.filter.labels, value] });\n };\n const removeLabel = (value: string) =>\n patchFilter({ labels: config.filter.labels.filter((l) => l !== value) });\n const clearFilters = () => {\n patchFilter(emptyFilter());\n setLabelDraft('');\n };\n\n const {\n options: assigneeOptions,\n hasMore: hasMoreAssignees,\n fetchMore: fetchMoreAssignees,\n } = useAssigneeOptions(null);\n\n const [createView, createState] = useMutation<{ planmagnetCreateBoardView: BoardView }>(\n CREATE_BOARD_VIEW,\n { refetchQueries: VIEW_REFETCH, awaitRefetchQueries: true }\n );\n const [updateView, updateState] = useMutation<{ planmagnetUpdateBoardView: BoardView }>(\n UPDATE_BOARD_VIEW,\n { refetchQueries: VIEW_REFETCH, awaitRefetchQueries: true }\n );\n const [deleteView, deleteState] = useMutation<{ planmagnetDeleteBoardView: boolean }>(\n DELETE_BOARD_VIEW,\n { refetchQueries: VIEW_REFETCH, awaitRefetchQueries: true }\n );\n\n const saveCurrentAsUpdate = async () => {\n if (!appliedView) return;\n setActionError(null);\n try {\n await throwOnError(\n updateView({ variables: { id: appliedView.id, input: { config: configToInput(config) } } })\n );\n } catch (e) {\n setActionError(messageOf(e, 'The view could not be updated.'));\n }\n };\n\n const toggleShare = async () => {\n if (!appliedView) return;\n setActionError(null);\n const visibility: BoardViewVisibility =\n appliedView.visibility === 'SHARED' ? 'PRIVATE' : 'SHARED';\n try {\n await throwOnError(updateView({ variables: { id: appliedView.id, input: { visibility } } }));\n } catch (e) {\n setActionError(messageOf(e, 'The view could not be shared.'));\n }\n };\n\n const removeView = async () => {\n if (!appliedView) return;\n setActionError(null);\n try {\n await throwOnError(deleteView({ variables: { id: appliedView.id } }));\n applyView(null);\n } catch (e) {\n setActionError(messageOf(e, 'The view could not be deleted.'));\n }\n };\n\n const mine = views.filter((v) => v.isMine).sort((a, b) => a.name.localeCompare(b.name));\n const shared = views.filter((v) => !v.isMine).sort((a, b) => a.name.localeCompare(b.name));\n\n const dirty = appliedView\n ? !configsEqual(config, configFromView(appliedView))\n : isFilterActive(config.filter);\n const busy = createState.loading || updateState.loading || deleteState.loading;\n\n return (\n <div className=\"space-y-3 rounded-md border bg-muted/20 p-3\" data-testid=\"board-view-bar\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <label className=\"flex items-center gap-1.5 text-sm\" htmlFor=\"board-view-select\">\n <span className=\"text-muted-foreground\">View</span>\n </label>\n <select\n id=\"board-view-select\"\n data-testid=\"board-view-select\"\n className={fieldClass}\n value={appliedViewId ?? ''}\n onChange={(e) => applyView(views.find((v) => v.id === e.target.value) ?? null)}\n >\n <option value=\"\">All cards</option>\n {mine.length > 0 && (\n <optgroup label=\"My views\">\n {mine.map((v) => (\n <option key={v.id} value={v.id}>\n {v.name}\n </option>\n ))}\n </optgroup>\n )}\n {shared.length > 0 && (\n <optgroup label=\"Shared views\">\n {shared.map((v) => (\n <option key={v.id} value={v.id}>\n {v.name}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n {viewsLoading && <span className=\"text-xs text-muted-foreground\">Loading views…</span>}\n {appliedView && !appliedView.isMine && (\n <span className=\"text-xs text-muted-foreground\">\n Shared by <PersonName id={appliedView.ownerId} /> — read-only\n </span>\n )}\n {dirty && appliedView?.isMine && (\n <span className=\"text-xs text-muted-foreground\">(unsaved changes)</span>\n )}\n\n <div className=\"ml-auto flex flex-wrap items-center gap-2\">\n <SaveViewDialog\n projectId={projectId}\n boardId={boardId}\n config={config}\n initial={\n appliedView && !appliedView.isMine\n ? { name: `${appliedView.name} (copy)`, description: appliedView.description }\n : null\n }\n createView={createView}\n creating={createState.loading}\n onSaved={(view) => applyView(view)}\n onError={setActionError}\n />\n {appliedView?.isMine && (\n <>\n <Button\n size=\"sm\"\n variant=\"outline\"\n data-testid=\"board-view-update\"\n disabled={busy}\n onClick={() => void saveCurrentAsUpdate()}\n >\n <Save className=\"mr-1 h-4 w-4\" />\n {updateState.loading ? 'Saving…' : 'Update view'}\n </Button>\n <RenameViewDialog\n view={appliedView}\n updateView={updateView}\n busy={updateState.loading}\n onError={setActionError}\n />\n <Button\n size=\"sm\"\n variant=\"outline\"\n data-testid=\"board-view-share\"\n disabled={busy}\n onClick={() => void toggleShare()}\n >\n <Share2 className=\"mr-1 h-4 w-4\" />\n {appliedView.visibility === 'SHARED' ? 'Unshare' : 'Share'}\n </Button>\n <ConfirmButton\n label=\"Delete\"\n variant=\"outline\"\n icon={<Trash2 className=\"mr-1 h-4 w-4\" />}\n title={`Delete \"${appliedView.name}\"?`}\n description=\"This view is deleted for everyone it was shared with. The work items it filters are not affected.\"\n confirmLabel=\"Delete view\"\n destructive\n disabled={busy}\n onConfirm={() => void removeView()}\n testId=\"board-view-delete\"\n />\n </>\n )}\n </div>\n </div>\n\n {unavailableNotice && (\n <p className=\"text-xs text-muted-foreground\" role=\"status\">\n {unavailableNotice}\n </p>\n )}\n {viewsError && <ErrorLine message={`Views could not be loaded: ${viewsError}`} />}\n {actionError && <ErrorLine message={actionError} />}\n\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n <div className=\"lg:col-span-2\">\n <label className={labelClass} htmlFor=\"board-filter-search-input\">\n Search\n </label>\n <Input\n id=\"board-filter-search-input\"\n data-testid=\"board-filter-search\"\n className=\"mt-1\"\n placeholder=\"Search by key or title\"\n value={config.filter.search}\n onChange={(e) => patchFilter({ search: e.target.value })}\n />\n </div>\n\n <fieldset className=\"min-w-0\" data-testid=\"board-filter-assignee\">\n <legend className={labelClass}>Assignee</legend>\n <div className=\"mt-1 max-h-28 space-y-1 overflow-y-auto rounded-md border p-1.5\">\n <label className=\"flex items-center gap-1.5 text-xs\">\n <Checkbox\n checked={config.filter.unassigned}\n onCheckedChange={(c) => patchFilter({ unassigned: c === true })}\n />\n Unassigned\n </label>\n {assigneeOptions.map((o) => (\n <label key={o.id} className=\"flex items-center gap-1.5 text-xs\">\n <Checkbox\n checked={config.filter.assigneeIds.includes(o.id)}\n onCheckedChange={() => toggleInArray('assigneeIds', o.id)}\n />\n <span className=\"truncate\">{o.name}</span>\n </label>\n ))}\n {hasMoreAssignees && (\n <button\n type=\"button\"\n className=\"text-xs text-primary hover:underline\"\n onClick={fetchMoreAssignees}\n >\n Show more members\n </button>\n )}\n </div>\n </fieldset>\n\n <fieldset className=\"min-w-0\" data-testid=\"board-filter-type\">\n <legend className={labelClass}>Type</legend>\n <div className=\"mt-1 space-y-1 rounded-md border p-1.5\">\n {WORK_ITEM_TYPES.map((t) => (\n <label key={t} className=\"flex items-center gap-1.5 text-xs\">\n <Checkbox\n checked={config.filter.types.includes(t)}\n onCheckedChange={() => toggleInArray('types', t)}\n />\n {enumLabel(t)}\n </label>\n ))}\n </div>\n </fieldset>\n\n <fieldset className=\"min-w-0\" data-testid=\"board-filter-priority\">\n <legend className={labelClass}>Priority</legend>\n <div className=\"mt-1 space-y-1 rounded-md border p-1.5\">\n {WORK_ITEM_PRIORITIES.map((p) => (\n <label key={p} className=\"flex items-center gap-1.5 text-xs\">\n <Checkbox\n checked={config.filter.priorities.includes(p)}\n onCheckedChange={() => toggleInArray('priorities', p)}\n />\n {enumLabel(p)}\n </label>\n ))}\n </div>\n </fieldset>\n\n <div className=\"min-w-0 lg:col-span-2\">\n <label className={labelClass} htmlFor=\"board-filter-label-input\">\n Labels\n </label>\n <Input\n id=\"board-filter-label-input\"\n data-testid=\"board-filter-label\"\n className=\"mt-1\"\n placeholder=\"Type a label, press Enter\"\n value={labelDraft}\n onChange={(e) => setLabelDraft(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n addLabel();\n }\n }}\n />\n {config.filter.labels.length > 0 && (\n <div className=\"mt-1 flex flex-wrap gap-1\">\n {config.filter.labels.map((l) => (\n <Badge key={l} variant=\"secondary\" className=\"gap-1\">\n {l}\n <button\n type=\"button\"\n aria-label={`Remove label ${l}`}\n onClick={() => removeLabel(l)}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ))}\n </div>\n )}\n </div>\n\n <div>\n <label className={labelClass} htmlFor=\"board-filter-sprint\">\n Sprint\n </label>\n <select\n id=\"board-filter-sprint\"\n data-testid=\"board-filter-sprint\"\n className={`${fieldClass} mt-1 w-full`}\n value={config.filter.sprintId}\n onChange={(e) => patchFilter({ sprintId: e.target.value })}\n >\n <option value=\"\">Any sprint</option>\n {sprintOptions.map((s) => (\n <option key={s.id} value={s.id}>\n {s.name}\n </option>\n ))}\n </select>\n </div>\n\n <div>\n <label className={labelClass} htmlFor=\"board-filter-milestone\">\n Milestone\n </label>\n <select\n id=\"board-filter-milestone\"\n data-testid=\"board-filter-milestone\"\n className={`${fieldClass} mt-1 w-full`}\n value={config.filter.milestoneId}\n onChange={(e) => patchFilter({ milestoneId: e.target.value })}\n >\n <option value=\"\">Any milestone</option>\n {milestoneOptions.map((m) => (\n <option key={m.id} value={m.id}>\n {m.name}\n </option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-2\">\n <div className=\"min-w-0 flex-1\">\n <label className={labelClass} htmlFor=\"board-filter-due-from\">\n Due from\n </label>\n <input\n id=\"board-filter-due-from\"\n data-testid=\"board-filter-due-from\"\n type=\"date\"\n className={`${fieldClass} mt-1 w-full`}\n value={config.filter.dueFrom}\n onChange={(e) => patchFilter({ dueFrom: e.target.value })}\n />\n </div>\n <div className=\"min-w-0 flex-1\">\n <label className={labelClass} htmlFor=\"board-filter-due-to\">\n Due to\n </label>\n <input\n id=\"board-filter-due-to\"\n data-testid=\"board-filter-due-to\"\n type=\"date\"\n className={`${fieldClass} mt-1 w-full`}\n value={config.filter.dueTo}\n onChange={(e) => patchFilter({ dueTo: e.target.value })}\n />\n </div>\n </div>\n\n <div className=\"flex items-end\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n data-testid=\"board-filter-clear\"\n disabled={!isFilterActive(config.filter)}\n onClick={clearFilters}\n >\n Clear filters\n </Button>\n </div>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-4 border-t pt-3\">\n <label className=\"flex items-center gap-1.5 text-sm\">\n <span className=\"text-muted-foreground\">Group by</span>\n <select\n aria-label=\"Group by\"\n data-testid=\"board-groupby\"\n className={fieldClass}\n value={config.groupBy}\n onChange={(e) => setConfig((c) => ({ ...c, groupBy: e.target.value as BoardGroupBy }))}\n >\n {GROUP_BY_OPTIONS.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n </label>\n\n <div className=\"flex items-center gap-1.5\" data-testid=\"board-sort\">\n <span className=\"text-sm text-muted-foreground\">Sort by</span>\n <select\n aria-label=\"Sort field\"\n className={fieldClass}\n value={config.sort.field}\n onChange={(e) =>\n setConfig((c) => ({\n ...c,\n sort: { ...c.sort, field: e.target.value as BoardSortField },\n }))\n }\n >\n {SORT_FIELD_OPTIONS.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n <select\n aria-label=\"Sort direction\"\n className={fieldClass}\n value={config.sort.direction}\n onChange={(e) =>\n setConfig((c) => ({\n ...c,\n sort: { ...c.sort, direction: e.target.value as SortDirection },\n }))\n }\n >\n <option value=\"ASC\">Ascending</option>\n <option value=\"DESC\">Descending</option>\n </select>\n </div>\n\n <fieldset className=\"flex flex-wrap items-center gap-2\" data-testid=\"board-fields\">\n <legend className=\"text-sm text-muted-foreground\">Fields</legend>\n {VISIBLE_FIELD_OPTIONS.map((f) => {\n const shown =\n config.visibleFields.length > 0\n ? config.visibleFields.includes(f.value)\n : DEFAULT_VISIBLE_FIELDS.includes(f.value);\n return (\n <label key={f.value} className=\"flex items-center gap-1 text-xs\">\n <Checkbox\n checked={shown}\n onCheckedChange={() =>\n setConfig((c) => {\n const base =\n c.visibleFields.length > 0 ? c.visibleFields : [...DEFAULT_VISIBLE_FIELDS];\n const next = base.includes(f.value)\n ? base.filter((v) => v !== f.value)\n : [...base, f.value];\n return { ...c, visibleFields: next };\n })\n }\n />\n {f.label}\n </label>\n );\n })}\n </fieldset>\n </div>\n </div>\n );\n}\n\nfunction SaveViewDialog({\n projectId,\n boardId,\n config,\n initial,\n createView,\n creating,\n onSaved,\n onError,\n}: {\n projectId: string;\n boardId: string | null;\n config: BoardViewConfigState;\n initial: { name: string; description: string | null } | null;\n createView: ReturnType<typeof useMutation<{ planmagnetCreateBoardView: BoardView }>>[0];\n creating: boolean;\n onSaved: (view: BoardView) => void;\n onError: (message: string) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [visibility, setVisibility] = useState<BoardViewVisibility>('PRIVATE');\n const [error, setError] = useState<string | null>(null);\n\n const reset = () => {\n setName(initial?.name ?? '');\n setDescription(initial?.description ?? '');\n setVisibility('PRIVATE');\n setError(null);\n };\n\n const save = async () => {\n setError(null);\n try {\n const result = await throwOnError(\n createView({\n variables: {\n input: {\n projectId,\n boardId,\n name: name.trim(),\n description: description.trim() || null,\n visibility,\n config: configToInput(config),\n },\n },\n })\n );\n const created = result.data?.planmagnetCreateBoardView;\n setOpen(false);\n if (created) onSaved(created);\n } catch (e) {\n const message = messageOf(e, 'The view could not be saved.');\n setError(message);\n onError(message);\n }\n };\n\n return (\n <ResponsiveDialog\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (next) reset();\n }}\n >\n <ResponsiveDialogTrigger asChild>\n <Button size=\"sm\" data-testid=\"board-view-save\">\n <Save className=\"mr-1 h-4 w-4\" />\n {initial ? 'Save as my view' : 'Save view'}\n </Button>\n </ResponsiveDialogTrigger>\n <ResponsiveDialogContent className=\"max-w-md\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>{initial ? 'Save as my view' : 'Save view'}</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n Saves the current filter, group-by, sort and fields as a new view over this board.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n <div className=\"space-y-3\">\n <div>\n <label htmlFor=\"save-view-name\" className=\"text-sm font-medium\">\n Name\n </label>\n <Input\n id=\"save-view-name\"\n className=\"mt-1\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n <div>\n <label htmlFor=\"save-view-description\" className=\"text-sm font-medium\">\n Description (optional)\n </label>\n <Input\n id=\"save-view-description\"\n className=\"mt-1\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n <div>\n <span className=\"text-sm font-medium\">Visibility</span>\n <div className=\"mt-1 flex gap-4 text-sm\">\n <label className=\"flex items-center gap-1.5\">\n <input\n type=\"radio\"\n name=\"save-view-visibility\"\n checked={visibility === 'PRIVATE'}\n onChange={() => setVisibility('PRIVATE')}\n />\n Private — only me\n </label>\n <label className=\"flex items-center gap-1.5\">\n <input\n type=\"radio\"\n name=\"save-view-visibility\"\n checked={visibility === 'SHARED'}\n onChange={() => setVisibility('SHARED')}\n />\n Shared — everyone who can read this board\n </label>\n </div>\n </div>\n </div>\n {error && <ErrorLine message={error} />}\n <ResponsiveDialogFooter>\n <Button onClick={() => void save()} disabled={name.trim() === '' || creating}>\n {creating ? 'Saving…' : 'Save view'}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n\nfunction RenameViewDialog({\n view,\n updateView,\n busy,\n onError,\n}: {\n view: BoardView;\n updateView: ReturnType<typeof useMutation<{ planmagnetUpdateBoardView: BoardView }>>[0];\n busy: boolean;\n onError: (message: string) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [name, setName] = useState(view.name);\n const [description, setDescription] = useState(view.description ?? '');\n const [error, setError] = useState<string | null>(null);\n\n const save = async () => {\n setError(null);\n try {\n await throwOnError(\n updateView({\n variables: {\n id: view.id,\n input: { name: name.trim(), description: description.trim() || null },\n },\n })\n );\n setOpen(false);\n } catch (e) {\n const message = messageOf(e, 'The view could not be renamed.');\n setError(message);\n onError(message);\n }\n };\n\n return (\n <ResponsiveDialog\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (next) {\n setName(view.name);\n setDescription(view.description ?? '');\n setError(null);\n }\n }}\n >\n <ResponsiveDialogTrigger asChild>\n <Button size=\"icon\" variant=\"ghost\" aria-label={`Rename ${view.name}`} disabled={busy}>\n <Pencil className=\"h-3.5 w-3.5\" />\n </Button>\n </ResponsiveDialogTrigger>\n <ResponsiveDialogContent className=\"max-w-md\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>Rename view</ResponsiveDialogTitle>\n </ResponsiveDialogHeader>\n <div className=\"space-y-3\">\n <div>\n <label htmlFor=\"rename-view-name\" className=\"text-sm font-medium\">\n Name\n </label>\n <Input\n id=\"rename-view-name\"\n className=\"mt-1\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n <div>\n <label htmlFor=\"rename-view-description\" className=\"text-sm font-medium\">\n Description (optional)\n </label>\n <Input\n id=\"rename-view-description\"\n className=\"mt-1\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n </div>\n {error && <ErrorLine message={error} />}\n <ResponsiveDialogFooter>\n <Button onClick={() => void save()} disabled={name.trim() === '' || busy}>\n {busy ? 'Saving…' : 'Save'}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BulkActions.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/board/BulkActions.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,6BAA6B,CAAC;AAqDlF,6GAA6G;AAC7G,eAAO,MAAM,YAAY,UAMxB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,2CAyOA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BulkActions.js","names":[],"sources":["../../../src/planmagnet/board/BulkActions.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { X } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { WORK_ITEM_PRIORITIES, enumLabel, useAssigneeOptions } from '../controls/WorkItemControls';\nimport { type ProjectWorkflow, workflowLabel } from '../hooks/useProjectWorkflow';\nimport { RequiredSkillsEditor } from '../skills/RequiredSkillsEditor';\nimport { requiredSkillsRefusal } from '../skills/skillTags';\nimport { useTr } from '../../shared/hooks/useTr';\n\n/**\n * Bulk update on the project board (BOFF-8047, capability register: Bulk update, `api-only`). The resolver and its\n * whitelist (`BULK_UPDATE_ALLOWED_FIELDS`: status, priority, assigneeId, sprintId, type, labels) have been real\n * since before this change; nothing in the UI ever called it. The server checks every selected item against the\n * project's workflow (BOFF-8043) and writes all-or-nothing — a refused move names how many items and why, and\n * nothing is changed. This bar only sends the fields the user actually touched; the rest are left out of the\n * mutation input entirely (not sent as \"no change\" — omitted), which is what a real bulk mutation call needs\n * (a `null` on `assigneeId`/`sprintId` explicitly clears it).\n *\n * Required skills (ANR-07, ANR-28): `requiredSkills` REPLACES every selected item's list (the service's rule), so\n * the bar offers \"replace with…\" (at least one skill) and an explicit \"clear\", never a silent merge.\n */\n\nconst NO_CHANGE = '';\nconst UNASSIGN = '__unassign__';\nconst NO_SPRINT = '__no_sprint__';\nconst SKILLS_REPLACE = 'replace';\nconst SKILLS_CLEAR = 'clear';\nconst OPEN_SPRINT_STATUSES = new Set(['PLANNING', 'ACTIVE', 'REVIEW']);\n\nconst BULK_UPDATE = gql`\n mutation ProjectBoardBulkUpdate($input: PlanmagnetBulkUpdateWorkItemsInput!) {\n planmagnetBulkUpdateWorkItems(input: $input) {\n id\n status\n priority\n assigneeId\n sprintId\n }\n }\n`;\n\nconst PROJECT_SPRINTS = gql`\n query BulkActionsProjectSprints($workspaceId: ID!, $projectId: String) {\n planmagnetSprints(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 100 }\n ) {\n items {\n id\n name\n status\n }\n }\n }\n`;\n\n/** Every query whose numbers a bulk change can move — the same list ProjectBoard's own mutations refetch. */\nexport const BULK_REFETCH = [\n 'ProjectBoard',\n 'ProjectBoards',\n 'GetWorkItems',\n 'GetWorkItemCounts',\n 'GetDashboardData',\n];\n\nexport function BulkActionsBar({\n projectId,\n selectedIds,\n workflow,\n onDone,\n}: {\n projectId: string;\n selectedIds: string[];\n workflow: ProjectWorkflow | null;\n onDone: () => void;\n}) {\n const { workspaceId } = usePlanMagnet();\n const tr = useTr();\n const [status, setStatus] = useState(NO_CHANGE);\n const [priority, setPriority] = useState(NO_CHANGE);\n const [assigneeId, setAssigneeId] = useState(NO_CHANGE);\n const [sprintId, setSprintId] = useState(NO_CHANGE);\n const [skillsMode, setSkillsMode] = useState(NO_CHANGE);\n const [skills, setSkills] = useState<string[]>([]);\n const [skillsError, setSkillsError] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [applied, setApplied] = useState<number | null>(null);\n\n const { options: assigneeOptions } = useAssigneeOptions(null);\n const { data: sprintsData } = useQuery<{\n planmagnetSprints?: { items: { id: string; name: string; status: string }[] };\n }>(PROJECT_SPRINTS, {\n variables: { workspaceId: workspaceId ?? '', projectId },\n skip: !workspaceId,\n });\n const sprints = (sprintsData?.planmagnetSprints?.items ?? []).filter((s) =>\n OPEN_SPRINT_STATUSES.has(s.status)\n );\n\n const [bulkUpdate, state] = useMutation<{ planmagnetBulkUpdateWorkItems: { id: string }[] }>(\n BULK_UPDATE,\n { refetchQueries: BULK_REFETCH, awaitRefetchQueries: true }\n );\n\n // Visible statuses this project uses; a hidden status stays off the bulk picker (matches every other status\n // control here). The server still owns the real per-item transition rule — this only offers sane targets.\n const statuses = (workflow?.statuses ?? []).filter((s) => !s.hidden);\n\n // \"Replace with…\" needs at least one skill: an empty replacement is a clear, which has its own explicit option.\n const skillsDirty =\n skillsMode === SKILLS_CLEAR || (skillsMode === SKILLS_REPLACE && skills.length > 0);\n const dirty =\n status !== NO_CHANGE ||\n priority !== NO_CHANGE ||\n assigneeId !== NO_CHANGE ||\n sprintId !== NO_CHANGE ||\n skillsDirty;\n\n const reset = () => {\n setStatus(NO_CHANGE);\n setPriority(NO_CHANGE);\n setAssigneeId(NO_CHANGE);\n setSprintId(NO_CHANGE);\n setSkillsMode(NO_CHANGE);\n setSkills([]);\n setSkillsError(null);\n };\n\n const apply = async () => {\n setError(null);\n setSkillsError(null);\n setApplied(null);\n const input: Record<string, unknown> = { ids: selectedIds };\n if (status !== NO_CHANGE) input.status = status;\n if (priority !== NO_CHANGE) input.priority = priority;\n if (assigneeId !== NO_CHANGE) input.assigneeId = assigneeId === UNASSIGN ? null : assigneeId;\n if (sprintId !== NO_CHANGE) input.sprintId = sprintId === NO_SPRINT ? null : sprintId;\n if (skillsDirty) input.requiredSkills = skillsMode === SKILLS_CLEAR ? [] : skills;\n try {\n const result = await throwOnError(bulkUpdate({ variables: { input } }));\n // The selection is left in place on success (rather than cleared): clearing it would unmount this bar\n // before its \"N tasks updated\" message could ever be read — the same class of bug as a refusal message\n // sitting on a row a refetch removes. The user clears it themselves once they have seen the result.\n setApplied(result.data?.planmagnetBulkUpdateWorkItems.length ?? selectedIds.length);\n reset();\n } catch (e) {\n // A refusal of the skills (BAD_USER_INPUT tagged requiredSkills) is shown on the skills editor itself.\n const skillsRefusal = skillsMode === SKILLS_REPLACE ? requiredSkillsRefusal(e) : null;\n if (skillsRefusal) setSkillsError(skillsRefusal);\n else setError(e instanceof Error ? e.message : 'The selected tasks could not be updated.');\n }\n };\n\n const onField =\n <T,>(setter: (v: T) => void) =>\n (value: T) => {\n setApplied(null);\n setError(null);\n setter(value);\n };\n\n return (\n <div\n className=\"flex flex-wrap items-center gap-2 rounded-md border bg-muted/40 p-2\"\n data-testid=\"board-bulk-actions\"\n >\n <span className=\"text-sm font-medium\" data-testid=\"board-bulk-count\">\n {selectedIds.length} selected\n </span>\n\n <select\n aria-label=\"Bulk: set status\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm\"\n value={status}\n disabled={state.loading}\n onChange={(e) => onField(setStatus)(e.target.value)}\n >\n <option value={NO_CHANGE}>Status: no change</option>\n {statuses.map((s) => (\n <option key={s.status} value={s.status}>\n Status: {workflowLabel(workflow, s.status)}\n </option>\n ))}\n </select>\n\n <select\n aria-label=\"Bulk: set priority\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm\"\n value={priority}\n disabled={state.loading}\n onChange={(e) => onField(setPriority)(e.target.value)}\n >\n <option value={NO_CHANGE}>Priority: no change</option>\n {WORK_ITEM_PRIORITIES.map((p) => (\n <option key={p} value={p}>\n Priority: {enumLabel(p)}\n </option>\n ))}\n </select>\n\n <select\n aria-label=\"Bulk: set assignee\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm max-w-[12rem]\"\n value={assigneeId}\n disabled={state.loading}\n onChange={(e) => onField(setAssigneeId)(e.target.value)}\n >\n <option value={NO_CHANGE}>Assignee: no change</option>\n <option value={UNASSIGN}>Assignee: Unassign</option>\n {assigneeOptions.map((o) => (\n <option key={o.id} value={o.id}>\n Assignee: {o.name}\n </option>\n ))}\n </select>\n\n <select\n aria-label=\"Bulk: set sprint\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm max-w-[12rem]\"\n value={sprintId}\n disabled={state.loading}\n onChange={(e) => onField(setSprintId)(e.target.value)}\n >\n <option value={NO_CHANGE}>Sprint: no change</option>\n <option value={NO_SPRINT}>Sprint: Remove from sprint</option>\n {sprints.map((s) => (\n <option key={s.id} value={s.id}>\n Sprint: {s.name}\n </option>\n ))}\n </select>\n\n <select\n aria-label={tr('planmagnet.skills.bulk.selectLabel', 'Bulk: set required skills')}\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm max-w-[14rem]\"\n value={skillsMode}\n disabled={state.loading}\n data-testid=\"board-bulk-skills-mode\"\n onChange={(e) => {\n setSkillsError(null);\n onField(setSkillsMode)(e.target.value);\n }}\n >\n <option value={NO_CHANGE}>\n {tr('planmagnet.skills.bulk.noChange', 'Required skills: no change')}\n </option>\n <option value={SKILLS_REPLACE}>\n {tr('planmagnet.skills.bulk.replace', 'Required skills: replace with…')}\n </option>\n <option value={SKILLS_CLEAR}>\n {tr('planmagnet.skills.bulk.clear', 'Required skills: clear')}\n </option>\n </select>\n\n <Button\n size=\"sm\"\n data-testid=\"board-bulk-apply\"\n disabled={!dirty || state.loading || selectedIds.length === 0}\n onClick={() => void apply()}\n >\n {state.loading ? 'Applying…' : `Apply to ${selectedIds.length}`}\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={onDone} disabled={state.loading}>\n <X className=\"mr-1 h-4 w-4\" />\n Clear selection\n </Button>\n\n {applied !== null && (\n <span role=\"status\" className=\"text-sm text-status-success-text\">\n {applied} task{applied === 1 ? '' : 's'} updated.\n </span>\n )}\n {error && <ErrorLine message={error} />}\n {skillsMode === SKILLS_REPLACE && (\n <div className=\"basis-full\" data-testid=\"board-bulk-skills\">\n <label htmlFor=\"board-bulk-required-skills\" className=\"text-sm font-medium\">\n {tr('planmagnet.skills.bulk.editorLabel', 'Replace required skills with')}\n </label>\n <RequiredSkillsEditor\n id=\"board-bulk-required-skills\"\n value={skills}\n onChange={(next) => {\n setApplied(null);\n setSkillsError(null);\n setSkills(next);\n }}\n disabled={state.loading}\n serverError={skillsError}\n hint={tr(\n 'planmagnet.skills.bulk.hint',\n 'Every selected task gets exactly this list; its current required skills are replaced.'\n )}\n />\n </div>\n )}\n {skillsMode === SKILLS_CLEAR && (\n <p\n className=\"basis-full text-xs text-muted-foreground\"\n data-testid=\"board-bulk-skills-clear\"\n >\n {tr(\n 'planmagnet.skills.bulk.clearHint',\n 'Removes every required skill from the selected tasks.'\n )}\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProjectBoard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/board/ProjectBoard.tsx"],"names":[],"mappings":"AAoQA,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnF;AAyFD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,2CA0TA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProjectBoard.js","names":[],"sources":["../../../src/planmagnet/board/ProjectBoard.tsx"],"sourcesContent":["import { createContext, useContext, useState, type ReactNode } from 'react';\nimport { gql } from '@apollo/client';\nimport { useApolloClient, useMutation, useQuery } from '@apollo/client/react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n Badge,\n Button,\n Card,\n CardContent,\n Input,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { ChevronLeft, ChevronRight, LayoutGrid, Pencil, Plus } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { PersonName } from '../people/People';\nimport { throwOnError } from '../utils/mutationResult';\nimport { useLiveRefresh } from '../hooks/useLiveRefresh';\nimport { LiveStatus } from '../controls/LiveStatus';\nimport {\n type ProjectWorkflow,\n allowedTargets,\n useProjectWorkflow,\n workflowLabel,\n} from '../hooks/useProjectWorkflow';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { useProjectMilestones, type MilestoneOption } from '../milestones/MilestoneControls';\nimport { BulkActionsBar } from './BulkActions';\nimport { BoardViewBar, type AppliedBoardState } from './BoardViewBar';\nimport {\n useProjectSprintOptions,\n type BoardCardField,\n type BoardGroupBy,\n type SprintOption,\n} from './boardViewConfig';\n\n/**\n * A project's board (P1.2). The server owns placement: each column's `cards`\n * follow the rule in wspace-planmagnet-svc board.service.ts `columnCardsWhere`\n * (placed column, else the first column mapped to the item's status), and\n * `unplacedCount` says how many items are on no column. Moving a card into a\n * column mapped to a status changes that status on the server, and a column's\n * WIP limit is enforced there too. This component only draws and asks.\n */\n\nconst STATUSES = [\n 'BACKLOG',\n 'TODO',\n 'IN_PROGRESS',\n 'IN_REVIEW',\n 'TESTING',\n 'DONE',\n 'CANCELLED',\n] as const;\n/** The project's workflow for everything drawn on its board (BOFF-8043): status names and allowed moves. */\nconst BoardWorkflow = createContext<ProjectWorkflow | null>(null);\nconst useStatusName = () => {\n const workflow = useContext(BoardWorkflow);\n return (status: string) => workflowLabel(workflow, status);\n};\n\nconst CARDS_PER_COLUMN = 100;\n\nconst BOARDS = gql`\n query ProjectBoards($workspaceId: ID!, $projectId: String) {\n planmagnetBoards(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 20 }\n ) {\n items {\n id\n name\n isDefault\n }\n }\n }\n`;\n\n/** Every field a card, its swimlane grouping or its view's visible fields might need — fetched once regardless of\n * which fields a view chooses to show, so toggling \"Fields\" or \"Group by\" never needs a fresh query. */\nconst CARD_FIELDS = `\n id\n key\n title\n status\n type\n priority\n storyPoints\n assigneeId\n statusSince\n dueDate\n labels\n sprintId\n milestoneId\n parentId\n parent {\n id\n title\n }\n`;\n\n/** The next page of one column (P1.2: a column shows 100 cards and used to say only \"+N more\"). `filter`/`sort`\n * are a board view's (PDM-N04): applied server-side, same as the board's own column query below. */\nconst COLUMN_PAGE = gql`\n query ProjectBoardColumnPage(\n $boardId: ID!\n $columnId: ID!\n $after: String\n $filter: PlanmagnetBoardCardFilter\n $sort: PlanmagnetBoardCardSort\n ) {\n planmagnetBoardColumnCards(\n boardId: $boardId\n columnId: $columnId\n pagination: { first: 100, after: $after }\n filter: $filter\n sort: $sort\n ) {\n pageInfo {\n hasNextPage\n endCursor\n }\n items {\n ${CARD_FIELDS}\n }\n }\n }\n`;\n\nconst BOARD = gql`\n query ProjectBoard($id: ID!, $filter: PlanmagnetBoardCardFilter, $sort: PlanmagnetBoardCardSort) {\n planmagnetBoard(id: $id) {\n id\n name\n unplacedCount\n columns {\n id\n name\n mappedStatus\n wipLimit\n sortOrder\n itemCount\n cards(pagination: { first: 100 }, filter: $filter, sort: $sort) {\n totalCount\n pageInfo {\n hasNextPage\n endCursor\n }\n items {\n ${CARD_FIELDS}\n }\n }\n }\n }\n }\n`;\n\nconst MOVE_CARD = gql`\n mutation ProjectBoardMoveCard($boardId: ID!, $input: PlanmagnetMoveCardInput!) {\n planmagnetMoveCard(boardId: $boardId, input: $input) {\n id\n }\n }\n`;\nconst CREATE_BOARD = gql`\n mutation ProjectBoardCreate($input: PlanmagnetCreateBoardInput!) {\n planmagnetCreateBoard(input: $input) {\n id\n }\n }\n`;\nconst CREATE_COLUMN = gql`\n mutation ProjectBoardCreateColumn($input: PlanmagnetCreateBoardColumnInput!) {\n planmagnetCreateBoardColumn(input: $input) {\n id\n }\n }\n`;\nconst UPDATE_COLUMN = gql`\n mutation ProjectBoardUpdateColumn($id: ID!, $input: PlanmagnetUpdateBoardColumnInput!) {\n planmagnetUpdateBoardColumn(id: $id, input: $input) {\n id\n }\n }\n`;\nconst DELETE_COLUMN = gql`\n mutation ProjectBoardDeleteColumn($id: ID!) {\n planmagnetDeleteBoardColumn(id: $id)\n }\n`;\nconst REORDER_COLUMNS = gql`\n mutation ProjectBoardReorder($boardId: ID!, $input: PlanmagnetReorderColumnsInput!) {\n planmagnetReorderColumns(boardId: $boardId, input: $input) {\n id\n }\n }\n`;\n\n/** Every query whose numbers a board change can move. */\nconst REFETCH = [\n 'ProjectBoard',\n 'ProjectBoards',\n 'GetWorkItems',\n 'GetWorkItemCounts',\n 'GetDashboardData',\n];\n\ninterface BoardCard {\n id: string;\n key: string;\n title: string;\n status: string;\n type: string;\n priority: string;\n storyPoints: number | null;\n assigneeId: string | null;\n /** When it entered its current status; null when unknown (changed by a path that records no history). */\n statusSince: string | null;\n dueDate: string | null;\n labels: string[];\n sprintId: string | null;\n milestoneId: string | null;\n parentId: string | null;\n /** The epic (or other parent) this card belongs to, when it has one — null when its parent was deleted too. */\n parent: { id: string; title: string } | null;\n}\n\ninterface PageInfo {\n hasNextPage: boolean;\n endCursor: string | null;\n}\n\ninterface BoardColumn {\n id: string;\n name: string;\n mappedStatus: string | null;\n wipLimit: number | null;\n sortOrder: number;\n /** Every item in this column, ignoring any view filter — what the WIP limit is measured against. */\n itemCount: number;\n cards: { totalCount: number; pageInfo: PageInfo; items: BoardCard[] };\n}\n\nconst PRIORITY_ORDER = ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'NONE'];\nconst DAY_MS = 86_400_000;\n\n/** Whole days in the current status, or null when unknown. */\nexport function daysInStatus(statusSince: string | null, now: number): number | null {\n if (!statusSince) return null;\n return Math.max(0, Math.floor((now - new Date(statusSince).getTime()) / DAY_MS));\n}\n\n/** Card aging: quiet under a week, a warning from 7 days, stronger from 14. Semantic tokens only. */\nfunction ageClass(days: number): string {\n if (days >= 14) return 'text-destructive font-medium';\n if (days >= 7) return 'text-status-warning-text';\n return 'text-muted-foreground';\n}\n\n/** The swimlane a card falls into for the given group-by — an empty string is the \"(none)\" lane. */\nfunction laneOf(card: BoardCard, groupBy: BoardGroupBy): string {\n switch (groupBy) {\n case 'ASSIGNEE':\n return card.assigneeId ?? '';\n case 'PRIORITY':\n return card.priority || 'NONE';\n case 'TYPE':\n return card.type || '';\n case 'EPIC':\n return card.parentId ?? '';\n case 'SPRINT':\n return card.sprintId ?? '';\n case 'MILESTONE':\n return card.milestoneId ?? '';\n default:\n return '';\n }\n}\n\n/** A friendly name for a lane's own key — resolved from whatever the cards in it already carry, or from the\n * project lookups (sprints, milestones) BoardViewBar already fetches for its filter pickers. */\nfunction laneLabel(\n lane: string,\n groupBy: BoardGroupBy,\n cards: BoardCard[],\n sprintOptions: SprintOption[],\n milestoneOptions: MilestoneOption[]\n): ReactNode {\n if (!lane) {\n return groupBy === 'ASSIGNEE' ? 'Unassigned' : `(No ${GROUP_BY_NOUN[groupBy] ?? 'value'})`;\n }\n switch (groupBy) {\n case 'ASSIGNEE':\n return <PersonName id={lane} />;\n case 'PRIORITY':\n case 'TYPE':\n return enumLabel(lane);\n case 'EPIC': {\n const epic = cards.find((c) => c.parentId === lane)?.parent;\n return epic ? epic.title : lane;\n }\n case 'SPRINT': {\n const sprint = sprintOptions.find((s) => s.id === lane);\n return sprint ? sprint.name : lane;\n }\n case 'MILESTONE': {\n const milestone = milestoneOptions.find((m) => m.id === lane);\n return milestone ? milestone.name : lane;\n }\n default:\n return lane;\n }\n}\n\nconst GROUP_BY_NOUN: Partial<Record<BoardGroupBy, string>> = {\n PRIORITY: 'priority',\n TYPE: 'type',\n EPIC: 'epic',\n SPRINT: 'sprint',\n MILESTONE: 'milestone',\n};\n\ninterface BoardData {\n id: string;\n name: string;\n unplacedCount: number;\n columns: BoardColumn[];\n}\n\nconst messageOf = (e: unknown, fallback: string) => (e instanceof Error ? e.message : fallback);\n\nfunction ErrorLine({ message }: { message: string }) {\n return (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {message}\n </p>\n );\n}\n\nexport function ProjectBoard({\n projectId,\n projectName,\n}: {\n projectId: string;\n projectName: string;\n}) {\n const { workspaceId } = usePlanMagnet();\n const client = useApolloClient();\n const [chosenBoardId, setChosenBoardId] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n // Card age is read against the moment the board opened (Date.now() may not run during render).\n const [now] = useState(() => Date.now());\n // Board views (PDM-N04): filter/sort/group-by/fields, driven by BoardViewBar — \"All cards\" until it reports its\n // own resolved state. `filter`/`sort` are sent straight to the board's card queries (server-side); `groupBy` and\n // `visibleFields` are read by this component when drawing swimlanes and cards.\n const [boardViewState, setBoardViewState] = useState<AppliedBoardState>({\n filter: undefined,\n sort: { field: 'RANK', direction: 'ASC' },\n groupBy: 'NONE',\n visibleFields: ['KEY', 'ASSIGNEE', 'STORY_POINTS'],\n filterActive: false,\n });\n const sprints = useProjectSprintOptions(workspaceId, projectId);\n const milestones = useProjectMilestones(projectId);\n // Pages loaded past each column's first 100, keyed by the board data they extend: a refetch starts over.\n const [more, setMore] = useState<{\n key: unknown;\n byColumn: Record<string, { items: BoardCard[]; pageInfo: PageInfo }>;\n }>({\n key: null,\n byColumn: {},\n });\n const [loadingMore, setLoadingMore] = useState<string | null>(null);\n // Bulk update (BOFF-8047): ids of the cards currently checked, across every column/lane.\n const [selected, setSelected] = useState<Set<string>>(new Set());\n const toggleSelect = (workItemId: string) =>\n setSelected((prev) => {\n const next = new Set(prev);\n if (next.has(workItemId)) next.delete(workItemId);\n else next.add(workItemId);\n return next;\n });\n const clearSelection = () => setSelected(new Set());\n const workflow = useProjectWorkflow(projectId);\n // Live updates (PDM-11, ANR-23): a board move, bulk update or any other work item change in this project\n // refreshes the board and the other pages counting these items. Bursts (a bulk update touching many cards)\n // coalesce into one refetch via the hook's own debounce; the mutation that CAUSED a local move already\n // refetches immediately through the same `REFETCH` list (its own `refetchQueries`, above), so the\n // subscription event that follows for it is a harmless duplicate the debounce absorbs rather than something\n // this component needs to filter by actor.\n const live = useLiveRefresh({ kind: 'workItem', projectId, queries: REFETCH });\n\n const { data: boardsData, loading: boardsLoading } = useQuery<{\n planmagnetBoards: { items: Array<{ id: string; name: string; isDefault: boolean }> };\n }>(BOARDS, { variables: { workspaceId, projectId }, skip: !workspaceId });\n const boards = boardsData?.planmagnetBoards.items ?? [];\n const boardId =\n (chosenBoardId && boards.some((b) => b.id === chosenBoardId) ? chosenBoardId : null) ??\n boards.find((b) => b.isDefault)?.id ??\n boards[0]?.id ??\n null;\n // A selection only makes sense on the board it was made on: switching boards (or projects, which changes\n // `boardId` too) drops it, the same \"derive during render\" pattern `more` below uses for its own reset.\n const [selectionBoardId, setSelectionBoardId] = useState(boardId);\n if (selectionBoardId !== boardId) {\n setSelectionBoardId(boardId);\n setSelected(new Set());\n }\n\n // A filter/sort change from BoardViewBar is a NEW combination of query variables, which Apollo (cache-and-network,\n // the client default) resolves with `data: undefined, loading: true` until the network answers — even though the\n // board was already showing something. Falling back to `previousData` keeps the last-known board (and its\n // columns/cards) on screen through that gap, so only a genuine first load or a board switch ever shows the\n // \"Loading board…\" text below; a filter/sort tweak never blanks the board out from under the view bar that\n // drives it (see `scripts/check-refetch-blanking.ts` — the same class of bug it guards `pages/` against).\n const { data, previousData, loading } = useQuery<{ planmagnetBoard: BoardData | null }>(BOARD, {\n variables: { id: boardId, filter: boardViewState.filter, sort: boardViewState.sort },\n skip: !boardId,\n });\n const board = data?.planmagnetBoard ?? previousData?.planmagnetBoard ?? null;\n const extra = more.key === board ? more.byColumn : {};\n /** A column with every page loaded so far. */\n const cardsOf = (column: BoardColumn) => {\n const loaded = extra[column.id];\n return {\n items: loaded ? [...column.cards.items, ...loaded.items] : column.cards.items,\n pageInfo: loaded ? loaded.pageInfo : column.cards.pageInfo,\n totalCount: column.cards.totalCount,\n };\n };\n const loadMore = async (column: BoardColumn) => {\n const cursor = cardsOf(column).pageInfo.endCursor;\n if (!board || !cursor) return;\n setError(null);\n setLoadingMore(column.id);\n try {\n const res = await client.query<{\n planmagnetBoardColumnCards: { pageInfo: PageInfo; items: BoardCard[] };\n }>({\n query: COLUMN_PAGE,\n variables: {\n boardId: board.id,\n columnId: column.id,\n after: cursor,\n filter: boardViewState.filter,\n sort: boardViewState.sort,\n },\n fetchPolicy: 'network-only',\n });\n const page = res.data?.planmagnetBoardColumnCards;\n if (!page) throw new Error(res.error?.message ?? 'The next cards could not be loaded.');\n const prior = extra[column.id]?.items ?? [];\n setMore({\n key: board,\n byColumn: {\n ...extra,\n [column.id]: { items: [...prior, ...page.items], pageInfo: page.pageInfo },\n },\n });\n } catch (e) {\n setError(messageOf(e, 'The next cards could not be loaded.'));\n } finally {\n setLoadingMore(null);\n }\n };\n\n const [createBoard, createBoardState] = useMutation<{ planmagnetCreateBoard: { id: string } }>(\n CREATE_BOARD,\n { refetchQueries: REFETCH, awaitRefetchQueries: true }\n );\n const [moveCard, moveState] = useMutation(MOVE_CARD, {\n refetchQueries: REFETCH,\n awaitRefetchQueries: true,\n });\n const [reorder] = useMutation(REORDER_COLUMNS, {\n refetchQueries: REFETCH,\n awaitRefetchQueries: true,\n });\n\n const run = async (action: () => Promise<{ error?: unknown }>, fallback: string) => {\n setError(null);\n try {\n await throwOnError(action());\n } catch (e) {\n setError(messageOf(e, fallback));\n }\n };\n\n const move = (workItemId: string, targetColumnId: string) =>\n run(\n () => moveCard({ variables: { boardId, input: { workItemId, targetColumnId } } }),\n 'The card could not be moved.'\n );\n\n const shiftColumn = (index: number, delta: -1 | 1) => {\n if (!board) return;\n const order = board.columns.map((c) => c.id);\n const target = index + delta;\n if (target < 0 || target >= order.length) return;\n [order[index], order[target]] = [order[target], order[index]];\n return run(\n () => reorder({ variables: { boardId, input: { columnIds: order } } }),\n 'The columns could not be reordered.'\n );\n };\n\n if (boardsLoading && !boardsData) {\n return <p className=\"text-sm text-muted-foreground p-4\">Loading board…</p>;\n }\n\n if (!boardId) {\n return (\n <Card>\n <CardContent className=\"p-8 text-center space-y-3\" data-testid=\"board-empty\">\n <LayoutGrid className=\"h-8 w-8 mx-auto text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">{projectName} has no board yet.</p>\n <Button\n size=\"sm\"\n disabled={createBoardState.loading}\n onClick={() =>\n run(\n () =>\n createBoard({\n variables: {\n input: {\n projectId,\n name: `${projectName} board`,\n type: 'KANBAN',\n isDefault: true,\n withDefaultColumns: true,\n },\n },\n }),\n 'The board could not be created.'\n )\n }\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n {createBoardState.loading ? 'Creating…' : 'Create board'}\n </Button>\n <p className=\"text-xs text-muted-foreground\">\n Starts with one column per status: Backlog, To Do, In Progress, In Review, Testing,\n Done.\n </p>\n {error && <ErrorLine message={error} />}\n </CardContent>\n </Card>\n );\n }\n\n return (\n <BoardWorkflow.Provider value={workflow}>\n <div className=\"space-y-3\" data-testid=\"project-board\">\n <div className=\"flex flex-wrap items-center gap-3\">\n {boards.length > 1 && (\n <select\n aria-label=\"Board\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-sm\"\n value={boardId}\n onChange={(e) => setChosenBoardId(e.target.value)}\n >\n {boards.map((b) => (\n <option key={b.id} value={b.id}>\n {b.name}\n </option>\n ))}\n </select>\n )}\n {board && board.unplacedCount > 0 && (\n <p className=\"text-xs text-muted-foreground\" data-testid=\"board-unplaced\">\n {board.unplacedCount} work item{board.unplacedCount === 1 ? ' is' : 's are'} not on\n this board: {board.unplacedCount === 1 ? 'its status has' : 'their status has'} no\n column.\n </p>\n )}\n <LiveStatus mode={live.mode} />\n {board && (\n <div className=\"ml-auto\">\n <ColumnDialog boardId={board.id} />\n </div>\n )}\n </div>\n {/* Board views (PDM-N04): gated on `boardId` (resolved from the boards list, above), never on `board`\n (the BOARD query's own data) — `board` resets to null while a filter/sort change it is driving is\n in flight, and BoardViewBar owns that filter/sort/group-by/fields state itself, so unmounting it here\n would drop whatever the user just picked mid-interaction. */}\n <BoardViewBar\n projectId={projectId}\n boardId={boardId}\n onSelectBoard={setChosenBoardId}\n sprintOptions={sprints.options}\n milestoneOptions={milestones.options}\n onStateChange={setBoardViewState}\n />\n {error && <ErrorLine message={error} />}\n {/* Bulk update (BOFF-8047): appears once at least one card is checked, disappears once the selection\n is cleared — it never blanks mid-action since a successful apply leaves the selection in place. */}\n {board && selected.size > 0 && (\n <BulkActionsBar\n projectId={projectId}\n selectedIds={[...selected]}\n workflow={workflow}\n onDone={clearSelection}\n />\n )}\n {loading && !board ? (\n <p className=\"text-sm text-muted-foreground p-4\">Loading board…</p>\n ) : board && boardViewState.groupBy !== 'NONE' ? (\n <SwimlaneBoard\n board={board}\n groupBy={boardViewState.groupBy}\n visibleFields={boardViewState.visibleFields}\n filterActive={boardViewState.filterActive}\n sprintOptions={sprints.options}\n milestoneOptions={milestones.options}\n cardsOf={cardsOf}\n now={now}\n busy={moveState.loading}\n loadingMore={loadingMore}\n selected={selected}\n onToggleSelect={toggleSelect}\n onLoadMore={(column) => void loadMore(column)}\n onMove={move}\n />\n ) : (\n <div className=\"flex gap-3 overflow-x-auto pb-2\">\n {board?.columns.map((column, index) => (\n <BoardColumnView\n key={column.id}\n boardId={board.id}\n column={column}\n columns={board.columns}\n cards={cardsOf(column)}\n visibleFields={boardViewState.visibleFields}\n filterActive={boardViewState.filterActive}\n sprintOptions={sprints.options}\n milestoneOptions={milestones.options}\n isFirst={index === 0}\n isLast={index === board.columns.length - 1}\n busy={moveState.loading}\n now={now}\n loadingMore={loadingMore === column.id}\n selected={selected}\n onToggleSelect={toggleSelect}\n onLoadMore={() => void loadMore(column)}\n onMove={move}\n onShift={(delta) => shiftColumn(index, delta)}\n />\n ))}\n {board && board.columns.length === 0 && (\n <p className=\"text-sm text-muted-foreground p-4\">\n This board has no columns. Add one to start placing work.\n </p>\n )}\n </div>\n )}\n </div>\n </BoardWorkflow.Provider>\n );\n}\n\ntype ColumnCards = { items: BoardCard[]; pageInfo: PageInfo; totalCount: number };\n\n/** One card: whatever fields the applied view chose (title is always shown), age in status, and a keyboard\n * \"Move…\" equal to drag-and-drop. */\nfunction CardView({\n card,\n column,\n columns,\n visibleFields,\n sprintOptions,\n milestoneOptions,\n busy,\n now,\n selected,\n onToggleSelect,\n onMove,\n}: {\n card: BoardCard;\n column: BoardColumn;\n columns: BoardColumn[];\n visibleFields: readonly BoardCardField[];\n sprintOptions: SprintOption[];\n milestoneOptions: MilestoneOption[];\n busy: boolean;\n now: number;\n selected: boolean;\n onToggleSelect: (workItemId: string) => void;\n onMove: (workItemId: string, targetColumnId: string) => void;\n}) {\n const navigate = usePlanMagnetNavigate();\n const workflow = useContext(BoardWorkflow);\n const days = daysInStatus(card.statusSince, now);\n // Only columns this card may move into: unmapped ones (no status change) and those whose status the workflow allows.\n const reachable = allowedTargets(workflow, card.status, STATUSES);\n const targets = columns.filter(\n (c) => c.id !== column.id && (!c.mappedStatus || reachable.includes(c.mappedStatus))\n );\n const show = (field: BoardCardField) => visibleFields.includes(field);\n const sprintName = card.sprintId ? sprintOptions.find((s) => s.id === card.sprintId)?.name : null;\n const milestoneName = card.milestoneId\n ? milestoneOptions.find((m) => m.id === card.milestoneId)?.name\n : null;\n // TYPE/PRIORITY/DUE_DATE/SPRINT/MILESTONE/EPIC render as one wrapping meta line — only when the view chose at\n // least one of them, so a card with none of these fields shows exactly what it always did.\n const extra: { key: string; text: string }[] = [];\n if (show('TYPE')) extra.push({ key: 'type', text: enumLabel(card.type) });\n if (show('PRIORITY')) extra.push({ key: 'priority', text: enumLabel(card.priority) });\n if (show('DUE_DATE') && card.dueDate) {\n extra.push({ key: 'due', text: `Due ${new Date(card.dueDate).toLocaleDateString()}` });\n }\n if (show('SPRINT') && sprintName) extra.push({ key: 'sprint', text: sprintName });\n if (show('MILESTONE') && milestoneName) extra.push({ key: 'milestone', text: milestoneName });\n if (show('EPIC') && card.parent) extra.push({ key: 'epic', text: card.parent.title });\n return (\n <li\n draggable\n onDragStart={(e) => {\n e.dataTransfer.setData('text/plain', card.id);\n e.dataTransfer.effectAllowed = 'move';\n }}\n className={`rounded-md border bg-background p-2 space-y-1 cursor-grab ${selected ? 'ring-2 ring-primary' : ''}`}\n data-testid=\"board-card\"\n >\n <div className=\"flex items-start gap-1.5\">\n {/* Bulk update (BOFF-8047): checking a card adds it to the selection the bulk action bar acts on.\n The `<li>` above is `draggable` for card drag-and-drop; a native drag source is resolved by\n walking UP from wherever the mouse/pointer went down, so without this the checkbox's own\n mousedown would still be picked up as \"drag the card\" instead of toggling the box. Stop that\n gesture (and any stray dragstart/click bubbling) at the checkbox itself; every other pointer\n in the card is untouched, so dragging the card from anywhere else still works. */}\n <input\n type=\"checkbox\"\n className=\"mt-0.5 shrink-0\"\n aria-label={`Select ${card.key}`}\n data-testid=\"board-card-select\"\n checked={selected}\n draggable={false}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onDragStart={(e) => e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n onChange={() => onToggleSelect(card.id)}\n />\n <button\n type=\"button\"\n className=\"text-left text-sm font-medium leading-tight hover:underline\"\n onClick={() => navigate(`/tasks/task-detail-page?taskId=${encodeURIComponent(card.id)}`)}\n >\n {card.title}\n </button>\n </div>\n <div className=\"flex items-center justify-between text-[11px] text-muted-foreground\">\n {show('KEY') && <span>{card.key}</span>}\n {/* Card aging (P1.2): how long it has had this status. Unknown when its status changed off the record. */}\n {days !== null && (\n <span\n data-testid=\"card-age\"\n className={ageClass(days)}\n title={`In ${workflowLabel(workflow, card.status)} since ${new Date(card.statusSince ?? '').toLocaleDateString()}`}\n >\n {days === 0 ? 'today' : `${days}d in status`}\n </span>\n )}\n {show('STORY_POINTS') && <span>{card.storyPoints ?? 0} pts</span>}\n </div>\n {extra.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[11px] text-muted-foreground\">\n {extra.map((e, i) => (\n <span key={e.key} className=\"flex items-center gap-1.5\">\n {i > 0 && <span aria-hidden=\"true\">·</span>}\n {e.text}\n </span>\n ))}\n </div>\n )}\n {show('LABELS') && card.labels.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {card.labels.map((l) => (\n <Badge key={l} variant=\"secondary\" className=\"px-1.5 py-0 text-[10px]\">\n {l}\n </Badge>\n ))}\n </div>\n )}\n <div className=\"flex items-center justify-between gap-1 text-[11px] text-muted-foreground\">\n <span className=\"truncate\">\n {show('ASSIGNEE') &&\n (card.assigneeId ? <PersonName id={card.assigneeId} /> : 'Unassigned')}\n </span>\n {/* The same move as drag-and-drop, for keyboard and assistive tech. */}\n <select\n aria-label={`Move ${card.key} to column`}\n className=\"rounded border border-input bg-background px-1 py-0.5 text-[11px]\"\n value=\"\"\n disabled={busy}\n onChange={(e) => e.target.value && onMove(card.id, e.target.value)}\n >\n <option value=\"\">Move…</option>\n {targets.map((c) => (\n <option key={c.id} value={c.id}>\n {c.name}\n </option>\n ))}\n </select>\n </div>\n </li>\n );\n}\n\n/** A drop target: dropping a card here moves it into `column`. */\nfunction DropZone({\n column,\n onMove,\n className,\n children,\n label,\n}: {\n column: BoardColumn;\n onMove: (workItemId: string, targetColumnId: string) => void;\n className: string;\n children: ReactNode;\n label: string;\n}) {\n const [dragOver, setDragOver] = useState(false);\n return (\n <section\n aria-label={label}\n className={`${className} ${dragOver ? 'ring-2 ring-primary' : ''}`}\n onDragOver={(e) => {\n e.preventDefault();\n setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDragOver(false);\n const workItemId = e.dataTransfer.getData('text/plain');\n if (workItemId) onMove(workItemId, column.id);\n }}\n >\n {children}\n </section>\n );\n}\n\n/** \"Showing N of M — Show more\" for a column with cards past the ones loaded. */\nfunction MoreCards({\n cards,\n loading,\n onLoadMore,\n}: {\n cards: ColumnCards;\n loading: boolean;\n onLoadMore: () => void;\n}) {\n const hidden = cards.totalCount - cards.items.length;\n if (hidden <= 0 || !cards.pageInfo.hasNextPage) return null;\n return (\n <div className=\"px-2 pb-2 space-y-1\">\n <p className=\"text-xs text-muted-foreground\">\n Showing {cards.items.length} of {cards.totalCount}\n </p>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-full\"\n data-testid=\"board-column-more\"\n disabled={loading}\n onClick={onLoadMore}\n >\n {loading ? 'Loading…' : `Show ${Math.min(hidden, CARDS_PER_COLUMN)} more`}\n </Button>\n </div>\n );\n}\n\n/**\n * Swimlanes (P1.2, extended by PDM-N04): rows by a board view's group-by, across the same columns. Moving a card\n * changes its column (and the status that column sets); its lane follows the grouped field itself (assignee,\n * priority, type, epic, sprint or milestone), changed elsewhere, never here.\n */\nfunction SwimlaneBoard({\n board,\n groupBy,\n visibleFields,\n filterActive,\n sprintOptions,\n milestoneOptions,\n cardsOf,\n now,\n busy,\n loadingMore,\n selected,\n onToggleSelect,\n onLoadMore,\n onMove,\n}: {\n board: BoardData;\n groupBy: BoardGroupBy;\n visibleFields: readonly BoardCardField[];\n filterActive: boolean;\n sprintOptions: SprintOption[];\n milestoneOptions: MilestoneOption[];\n cardsOf: (column: BoardColumn) => ColumnCards;\n now: number;\n busy: boolean;\n loadingMore: string | null;\n selected: Set<string>;\n onToggleSelect: (workItemId: string) => void;\n onLoadMore: (column: BoardColumn) => void;\n onMove: (workItemId: string, targetColumnId: string) => void;\n}) {\n const perColumn = board.columns.map((column) => ({ column, cards: cardsOf(column) }));\n const allLoadedCards = perColumn.flatMap(({ cards }) => cards.items);\n const lanes = [...new Set(allLoadedCards.map((c) => laneOf(c, groupBy)))].sort((a, b) =>\n groupBy === 'PRIORITY'\n ? PRIORITY_ORDER.indexOf(a) - PRIORITY_ORDER.indexOf(b)\n : a === ''\n ? 1\n : b === ''\n ? -1\n : a.localeCompare(b)\n );\n return (\n <div className=\"overflow-x-auto pb-2 space-y-3\" data-testid=\"board-swimlanes\">\n <p className=\"text-xs text-muted-foreground\">\n Dragging moves a card between columns. Its lane follows its{' '}\n {(GROUP_BY_NOUN[groupBy] ?? groupBy.toLowerCase()).toLowerCase()}.\n </p>\n <div className=\"flex gap-3\">\n {perColumn.map(({ column, cards }) => (\n <div key={column.id} className=\"min-w-[240px] w-[240px] shrink-0 px-2\">\n <ColumnCount\n column={column}\n filteredCount={cards.totalCount}\n filterActive={filterActive}\n />\n </div>\n ))}\n </div>\n {lanes.length === 0 && (\n <p className=\"text-sm text-muted-foreground p-4\">No cards on this board yet.</p>\n )}\n {lanes.map((lane) => (\n <div key={lane || 'none'} data-testid=\"board-swimlane\" className=\"space-y-1\">\n <p className=\"text-xs font-medium\">\n {laneLabel(lane, groupBy, allLoadedCards, sprintOptions, milestoneOptions)}{' '}\n <span className=\"text-muted-foreground\">\n ({allLoadedCards.filter((c) => laneOf(c, groupBy) === lane).length})\n </span>\n </p>\n <div className=\"flex gap-3\">\n {perColumn.map(({ column, cards }) => (\n <DropZone\n key={column.id}\n column={column}\n onMove={onMove}\n label={`${column.name} column`}\n className=\"min-w-[240px] w-[240px] shrink-0 rounded-md border bg-muted/30\"\n >\n <ul className=\"p-2 space-y-2 min-h-[48px]\">\n {cards.items\n .filter((c) => laneOf(c, groupBy) === lane)\n .map((card) => (\n <CardView\n key={card.id}\n card={card}\n column={column}\n columns={board.columns}\n visibleFields={visibleFields}\n sprintOptions={sprintOptions}\n milestoneOptions={milestoneOptions}\n busy={busy}\n now={now}\n selected={selected.has(card.id)}\n onToggleSelect={onToggleSelect}\n onMove={onMove}\n />\n ))}\n </ul>\n </DropZone>\n ))}\n </div>\n </div>\n ))}\n <div className=\"flex gap-3\">\n {perColumn.map(({ column, cards }) => (\n <div key={column.id} className=\"min-w-[240px] w-[240px] shrink-0\">\n <MoreCards\n cards={cards}\n loading={loadingMore === column.id}\n onLoadMore={() => onLoadMore(column)}\n />\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n/** A column's header count: the unfiltered `itemCount` against its WIP limit, plus — when a view filter narrows\n * the board — how many of those match it. */\nfunction ColumnCount({\n column,\n filteredCount,\n filterActive,\n testId,\n}: {\n column: BoardColumn;\n filteredCount: number;\n filterActive: boolean;\n testId?: string;\n}) {\n const atLimit =\n column.wipLimit != null && column.wipLimit > 0 && column.itemCount >= column.wipLimit;\n return (\n <h3 className=\"text-sm font-medium truncate\" data-testid={testId}>\n {column.name}{' '}\n <span\n className={`text-xs rounded-full px-1.5 ${atLimit ? 'bg-status-warning-subtle text-status-warning' : 'bg-muted'}`}\n title={column.wipLimit ? `WIP limit ${column.wipLimit}` : undefined}\n >\n {column.wipLimit ? `${column.itemCount} / ${column.wipLimit}` : column.itemCount}\n </span>\n {filterActive && (\n <span className=\"ml-1 text-xs text-muted-foreground\">showing {filteredCount}</span>\n )}\n </h3>\n );\n}\n\nfunction BoardColumnView({\n boardId,\n column,\n columns,\n cards,\n visibleFields,\n filterActive,\n sprintOptions,\n milestoneOptions,\n isFirst,\n isLast,\n busy,\n now,\n loadingMore,\n selected,\n onToggleSelect,\n onLoadMore,\n onMove,\n onShift,\n}: {\n boardId: string;\n column: BoardColumn;\n columns: BoardColumn[];\n cards: ColumnCards;\n visibleFields: readonly BoardCardField[];\n filterActive: boolean;\n sprintOptions: SprintOption[];\n milestoneOptions: MilestoneOption[];\n isFirst: boolean;\n isLast: boolean;\n busy: boolean;\n now: number;\n loadingMore: boolean;\n selected: Set<string>;\n onToggleSelect: (workItemId: string) => void;\n onLoadMore: () => void;\n onMove: (workItemId: string, targetColumnId: string) => void;\n onShift: (delta: -1 | 1) => void;\n}) {\n const statusName = useStatusName();\n\n return (\n <DropZone\n column={column}\n onMove={onMove}\n label={`${column.name} column`}\n className=\"min-w-[240px] w-[240px] shrink-0 rounded-md border bg-muted/30\"\n >\n <div data-testid={`board-column-${column.name}`}>\n <header className=\"p-2 border-b space-y-1\">\n <div className=\"flex items-center justify-between gap-1\">\n <ColumnCount\n column={column}\n filteredCount={cards.totalCount}\n filterActive={filterActive}\n testId={`board-column-count-${column.name}`}\n />\n </div>\n <div className=\"flex items-center justify-between gap-1\">\n <span className=\"text-[11px] text-muted-foreground\">\n {column.mappedStatus\n ? `Sets status: ${statusName(column.mappedStatus)}`\n : 'No status'}\n </span>\n <span className=\"flex\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6\"\n aria-label={`Move ${column.name} column left`}\n disabled={isFirst}\n onClick={() => onShift(-1)}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n </Button>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6\"\n aria-label={`Move ${column.name} column right`}\n disabled={isLast}\n onClick={() => onShift(1)}\n >\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </Button>\n <ColumnDialog boardId={boardId} column={column} />\n </span>\n </div>\n </header>\n <ul className=\"p-2 space-y-2 min-h-[80px]\">\n {cards.items.map((card) => (\n <CardView\n key={card.id}\n card={card}\n column={column}\n columns={columns}\n visibleFields={visibleFields}\n sprintOptions={sprintOptions}\n milestoneOptions={milestoneOptions}\n busy={busy}\n now={now}\n selected={selected.has(card.id)}\n onToggleSelect={onToggleSelect}\n onMove={onMove}\n />\n ))}\n {cards.totalCount === 0 && (\n <li className=\"text-xs text-muted-foreground text-center py-4\">Empty</li>\n )}\n </ul>\n <MoreCards cards={cards} loading={loadingMore} onLoadMore={onLoadMore} />\n </div>\n </DropZone>\n );\n}\n\nfunction ColumnDialog({ boardId, column }: { boardId: string; column?: BoardColumn }) {\n const editing = column !== undefined;\n const statusName = useStatusName();\n const [open, setOpen] = useState(false);\n const [name, setName] = useState(column?.name ?? '');\n const [mappedStatus, setMappedStatus] = useState(column?.mappedStatus ?? '');\n const [wip, setWip] = useState(column?.wipLimit ? String(column.wipLimit) : '');\n const [error, setError] = useState<string | null>(null);\n const options = { refetchQueries: REFETCH, awaitRefetchQueries: true };\n const [create, createState] = useMutation(CREATE_COLUMN, options);\n const [update, updateState] = useMutation(UPDATE_COLUMN, options);\n const [remove, removeState] = useMutation(DELETE_COLUMN, options);\n const busy = createState.loading || updateState.loading || removeState.loading;\n\n const wipValue = wip.trim() === '' ? null : Number(wip);\n const invalidWip = wipValue !== null && (!Number.isInteger(wipValue) || wipValue < 1);\n const canSave = name.trim() !== '' && !invalidWip && !busy;\n\n const reset = () => {\n setName(column?.name ?? '');\n setMappedStatus(column?.mappedStatus ?? '');\n setWip(column?.wipLimit ? String(column.wipLimit) : '');\n setError(null);\n };\n\n const save = async () => {\n setError(null);\n const fields = {\n name: name.trim(),\n mappedStatus: mappedStatus || null,\n wipLimit: wipValue,\n };\n try {\n if (editing) {\n await throwOnError(update({ variables: { id: column.id, input: fields } }));\n } else {\n await throwOnError(\n create({ variables: { input: { boardId, type: 'CUSTOM', ...fields } } })\n );\n }\n setOpen(false);\n } catch (e) {\n setError(messageOf(e, 'The column could not be saved.'));\n }\n };\n\n const idPrefix = editing ? `column-${column.id}` : 'new-column';\n\n return (\n <ResponsiveDialog\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (next) reset();\n }}\n >\n <ResponsiveDialogTrigger asChild>\n {editing ? (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6\"\n aria-label={`Edit ${column.name} column`}\n >\n <Pencil className=\"h-3.5 w-3.5\" />\n </Button>\n ) : (\n <Button size=\"sm\" variant=\"outline\">\n <Plus className=\"mr-1 h-4 w-4\" />\n Add column\n </Button>\n )}\n </ResponsiveDialogTrigger>\n <ResponsiveDialogContent className=\"max-w-md\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {editing ? `Edit ${column.name}` : 'Add column'}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n Moving a card into a column that sets a status changes the work item&apos;s status.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n <div className=\"space-y-3\">\n <div>\n <label htmlFor={`${idPrefix}-name`} className=\"text-sm font-medium\">\n Name\n </label>\n <Input\n id={`${idPrefix}-name`}\n className=\"mt-1\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n <div>\n <label htmlFor={`${idPrefix}-status`} className=\"text-sm font-medium\">\n Sets status\n </label>\n <select\n id={`${idPrefix}-status`}\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={mappedStatus}\n onChange={(e) => setMappedStatus(e.target.value)}\n >\n <option value=\"\">No status (cards keep theirs)</option>\n {STATUSES.map((s) => (\n <option key={s} value={s}>\n {statusName(s)}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label htmlFor={`${idPrefix}-wip`} className=\"text-sm font-medium\">\n WIP limit (blank for none)\n </label>\n <Input\n id={`${idPrefix}-wip`}\n type=\"number\"\n min={1}\n className=\"mt-1\"\n value={wip}\n onChange={(e) => setWip(e.target.value)}\n />\n {invalidWip && <ErrorLine message=\"The WIP limit must be a whole number, 1 or more.\" />}\n </div>\n </div>\n {error && <ErrorLine message={error} />}\n <ResponsiveDialogFooter className=\"gap-2\">\n {editing && (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant=\"outline\" disabled={busy}>\n Delete column\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete {column.name}?</AlertDialogTitle>\n <AlertDialogDescription>\n Its cards are not deleted: each goes back to the column for its status, or off\n the board if no column sets that status.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Keep it</AlertDialogCancel>\n <AlertDialogAction\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n onClick={async () => {\n try {\n await throwOnError(remove({ variables: { id: column.id } }));\n setOpen(false);\n } catch (e) {\n setError(messageOf(e, 'The column could not be deleted.'));\n }\n }}\n >\n Delete column\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )}\n <Button onClick={save} disabled={!canSave} data-testid={`${idPrefix}-save`}>\n {busy ? 'Saving…' : editing ? 'Save' : 'Add column'}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boardViewConfig.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/board/boardViewConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boardViewConfig.js","names":[],"sources":["../../../src/planmagnet/board/boardViewConfig.ts"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\n\n/**\n * Board views (PDM-N04): a saved, named presentation over a project's board — filter, group-by, sort, visible\n * fields, owner, sharing. A view holds no items and never creates a board (owner decision, 2026-09-29). Shapes,\n * conversions and the shared queries/mutations live here; `BoardViewBar.tsx` is the UI that uses them.\n */\n\nexport type BoardGroupBy =\n | 'NONE'\n | 'ASSIGNEE'\n | 'PRIORITY'\n | 'TYPE'\n | 'EPIC'\n | 'SPRINT'\n | 'MILESTONE';\nexport type BoardSortField =\n | 'RANK'\n | 'PRIORITY'\n | 'DUE_DATE'\n | 'STORY_POINTS'\n | 'CREATED_AT'\n | 'UPDATED_AT';\nexport type SortDirection = 'ASC' | 'DESC';\nexport type BoardCardField =\n | 'KEY'\n | 'TYPE'\n | 'PRIORITY'\n | 'ASSIGNEE'\n | 'STORY_POINTS'\n | 'DUE_DATE'\n | 'LABELS'\n | 'SPRINT'\n | 'MILESTONE'\n | 'EPIC';\nexport type BoardViewVisibility = 'PRIVATE' | 'SHARED';\n\n/** The project's work item types (WorkItemType), for the type filter. */\nexport const WORK_ITEM_TYPES = ['BUG', 'EPIC', 'STORY', 'SUB_TASK', 'TASK'] as const;\n\nexport const GROUP_BY_OPTIONS: ReadonlyArray<{ value: BoardGroupBy; label: string }> = [\n { value: 'NONE', label: 'None' },\n { value: 'ASSIGNEE', label: 'Assignee' },\n { value: 'PRIORITY', label: 'Priority' },\n { value: 'TYPE', label: 'Type' },\n { value: 'EPIC', label: 'Epic' },\n { value: 'SPRINT', label: 'Sprint' },\n { value: 'MILESTONE', label: 'Milestone' },\n];\n\nexport const SORT_FIELD_OPTIONS: ReadonlyArray<{ value: BoardSortField; label: string }> = [\n { value: 'RANK', label: 'Board order' },\n { value: 'PRIORITY', label: 'Priority' },\n { value: 'DUE_DATE', label: 'Due date' },\n { value: 'STORY_POINTS', label: 'Story points' },\n { value: 'CREATED_AT', label: 'Created' },\n { value: 'UPDATED_AT', label: 'Updated' },\n];\n\nexport const VISIBLE_FIELD_OPTIONS: ReadonlyArray<{ value: BoardCardField; label: string }> = [\n { value: 'KEY', label: 'Key' },\n { value: 'TYPE', label: 'Type' },\n { value: 'PRIORITY', label: 'Priority' },\n { value: 'ASSIGNEE', label: 'Assignee' },\n { value: 'STORY_POINTS', label: 'Story points' },\n { value: 'DUE_DATE', label: 'Due date' },\n { value: 'LABELS', label: 'Labels' },\n { value: 'SPRINT', label: 'Sprint' },\n { value: 'MILESTONE', label: 'Milestone' },\n { value: 'EPIC', label: 'Epic' },\n];\n\n/** The board's own card before any view narrows what shows — matches what the board rendered before PDM-N04. */\nexport const DEFAULT_VISIBLE_FIELDS: BoardCardField[] = ['KEY', 'ASSIGNEE', 'STORY_POINTS'];\n\n/** Fields shown on a card: the view's own choice, or the board's default card when it named none. */\nexport function effectiveVisibleFields(\n fields: readonly BoardCardField[]\n): readonly BoardCardField[] {\n return fields.length > 0 ? fields : DEFAULT_VISIBLE_FIELDS;\n}\n\nexport interface BoardFilterState {\n assigneeIds: string[];\n unassigned: boolean;\n types: string[];\n priorities: string[];\n labels: string[];\n search: string;\n sprintId: string;\n milestoneId: string;\n /** yyyy-mm-dd, or '' for no bound. */\n dueFrom: string;\n dueTo: string;\n}\n\nexport interface BoardSortState {\n field: BoardSortField;\n direction: SortDirection;\n}\n\nexport interface BoardViewConfigState {\n filter: BoardFilterState;\n sort: BoardSortState;\n groupBy: BoardGroupBy;\n visibleFields: BoardCardField[];\n}\n\nexport function emptyFilter(): BoardFilterState {\n return {\n assigneeIds: [],\n unassigned: false,\n types: [],\n priorities: [],\n labels: [],\n search: '',\n sprintId: '',\n milestoneId: '',\n dueFrom: '',\n dueTo: '',\n };\n}\n\nexport function defaultSort(): BoardSortState {\n return { field: 'RANK', direction: 'ASC' };\n}\n\n/** \"All cards\": no view applied. */\nexport function defaultConfig(): BoardViewConfigState {\n return { filter: emptyFilter(), sort: defaultSort(), groupBy: 'NONE', visibleFields: [] };\n}\n\n/** The server's `PlanmagnetBoardCardFilter` input — `undefined` (omit the variable) when nothing is set. */\nexport function filterToGraphQLInput(\n filter: BoardFilterState\n): Record<string, unknown> | undefined {\n const input: Record<string, unknown> = {};\n if (filter.assigneeIds.length > 0) input.assigneeIds = filter.assigneeIds;\n if (filter.unassigned) input.unassigned = true;\n if (filter.types.length > 0) input.types = filter.types;\n if (filter.priorities.length > 0) input.priorities = filter.priorities;\n if (filter.labels.length > 0) input.labels = filter.labels;\n if (filter.search.trim()) input.search = filter.search.trim();\n if (filter.sprintId) input.sprintId = filter.sprintId;\n if (filter.milestoneId) input.milestoneId = filter.milestoneId;\n if (filter.dueFrom) input.dueFrom = `${filter.dueFrom}T00:00:00.000Z`;\n if (filter.dueTo) input.dueTo = `${filter.dueTo}T00:00:00.000Z`;\n return Object.keys(input).length > 0 ? input : undefined;\n}\n\n/** Whether any filter is actually narrowing the board (for the \"showing N\" hint and the Clear button). */\nexport function isFilterActive(filter: BoardFilterState): boolean {\n return filterToGraphQLInput(filter) !== undefined;\n}\n\n/** The server's `PlanmagnetBoardViewConfigInput` — a full replacement of a view's stored configuration. */\nexport function configToInput(config: BoardViewConfigState): {\n filter: Record<string, unknown> | null;\n groupBy: BoardGroupBy;\n sort: { field: BoardSortField; direction: SortDirection };\n visibleFields: BoardCardField[];\n} {\n return {\n filter: filterToGraphQLInput(config.filter) ?? null,\n groupBy: config.groupBy,\n sort: { field: config.sort.field, direction: config.sort.direction },\n visibleFields: config.visibleFields,\n };\n}\n\nexport interface BoardViewFilterValue {\n assigneeIds: string[];\n unassigned: boolean;\n types: string[];\n priorities: string[];\n labels: string[];\n search: string | null;\n sprintId: string | null;\n milestoneId: string | null;\n dueFrom: string | null;\n dueTo: string | null;\n}\n\nexport interface BoardView {\n id: string;\n name: string;\n description: string | null;\n projectId: string;\n boardId: string | null;\n ownerId: string;\n visibility: BoardViewVisibility;\n isMine: boolean;\n filter: BoardViewFilterValue;\n groupBy: BoardGroupBy;\n sort: { field: BoardSortField; direction: SortDirection };\n visibleFields: BoardCardField[];\n createdAt: string;\n updatedAt: string;\n}\n\n/** A saved view's stored configuration, converted into the same shape the editable controls use. */\nexport function configFromView(view: BoardView): BoardViewConfigState {\n return {\n filter: {\n assigneeIds: view.filter.assigneeIds,\n unassigned: view.filter.unassigned,\n types: view.filter.types,\n priorities: view.filter.priorities,\n labels: view.filter.labels,\n search: view.filter.search ?? '',\n sprintId: view.filter.sprintId ?? '',\n milestoneId: view.filter.milestoneId ?? '',\n dueFrom: view.filter.dueFrom ? view.filter.dueFrom.slice(0, 10) : '',\n dueTo: view.filter.dueTo ? view.filter.dueTo.slice(0, 10) : '',\n },\n sort: { field: view.sort.field, direction: view.sort.direction },\n groupBy: view.groupBy,\n visibleFields: view.visibleFields,\n };\n}\n\nconst norm = (a: readonly string[]) => [...a].sort().join('\\u0000');\n\n/** Whether two configurations would save as the same thing — drives the \"unsaved changes\" hint. */\nexport function configsEqual(a: BoardViewConfigState, b: BoardViewConfigState): boolean {\n return (\n norm(a.filter.assigneeIds) === norm(b.filter.assigneeIds) &&\n a.filter.unassigned === b.filter.unassigned &&\n norm(a.filter.types) === norm(b.filter.types) &&\n norm(a.filter.priorities) === norm(b.filter.priorities) &&\n norm(a.filter.labels) === norm(b.filter.labels) &&\n a.filter.search.trim() === b.filter.search.trim() &&\n a.filter.sprintId === b.filter.sprintId &&\n a.filter.milestoneId === b.filter.milestoneId &&\n a.filter.dueFrom === b.filter.dueFrom &&\n a.filter.dueTo === b.filter.dueTo &&\n a.sort.field === b.sort.field &&\n a.sort.direction === b.sort.direction &&\n a.groupBy === b.groupBy &&\n norm(a.visibleFields) === norm(b.visibleFields)\n );\n}\n\n/** The `?view=` URL parameter that keeps an applied view linkable — read via `window.location.search`, the same\n * convention this codebase already uses for `?taskId=` and `?objectiveId=`. */\nexport function readViewIdFromUrl(): string | null {\n if (typeof window === 'undefined') return null;\n return new URLSearchParams(window.location.search).get('view') || null;\n}\n\n/** Keeps the applied view linkable without adding a history entry or touching the host shell's own router. */\nexport function writeViewIdToUrl(viewId: string | null): void {\n if (typeof window === 'undefined') return;\n const url = new URL(window.location.href);\n if (viewId) url.searchParams.set('view', viewId);\n else url.searchParams.delete('view');\n window.history.replaceState(window.history.state, '', url);\n}\n\n// ─── Queries & mutations ────────────────────────────────────────────────────\n\nconst BOARD_VIEW_FIELDS = `\n id\n name\n description\n projectId\n boardId\n board {\n id\n name\n }\n ownerId\n visibility\n isMine\n filter {\n assigneeIds\n unassigned\n types\n priorities\n labels\n search\n sprintId\n milestoneId\n dueFrom\n dueTo\n }\n groupBy\n sort {\n field\n direction\n }\n visibleFields\n createdAt\n updatedAt\n`;\n\n/** Own views plus every SHARED one of the project (server rule — `mine` is left unset on purpose). */\nexport const BOARD_VIEWS = gql`\n query ProjectBoardViews($workspaceId: ID!, $filter: PlanmagnetBoardViewFilter, $pagination: PlanmagnetPaginationInput) {\n planmagnetBoardViews(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n items {\n ${BOARD_VIEW_FIELDS}\n }\n totalCount\n }\n }\n`;\n\nexport const CREATE_BOARD_VIEW = gql`\n mutation ProjectBoardViewCreate($input: PlanmagnetCreateBoardViewInput!) {\n planmagnetCreateBoardView(input: $input) {\n ${BOARD_VIEW_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_BOARD_VIEW = gql`\n mutation ProjectBoardViewUpdate($id: ID!, $input: PlanmagnetUpdateBoardViewInput!) {\n planmagnetUpdateBoardView(id: $id, input: $input) {\n ${BOARD_VIEW_FIELDS}\n }\n }\n`;\n\nexport const DELETE_BOARD_VIEW = gql`\n mutation ProjectBoardViewDelete($id: ID!) {\n planmagnetDeleteBoardView(id: $id)\n }\n`;\n\n/** The only query a board-view write can move: the bar's own list. Board data reacts to `filter`/`sort`/`groupBy`\n * changing on ProjectBoard's own state, which re-runs its query on its own — no refetch entry needed for it. */\nexport const VIEW_REFETCH = ['ProjectBoardViews'];\n\nexport function useBoardViews(workspaceId: string | undefined, projectId: string) {\n const { data, loading, error, refetch } = useQuery<{\n planmagnetBoardViews: { items: BoardView[]; totalCount: number };\n }>(BOARD_VIEWS, {\n variables: {\n workspaceId: workspaceId ?? '',\n filter: { projectId },\n pagination: { first: 100 },\n },\n skip: !workspaceId,\n });\n return {\n views: data?.planmagnetBoardViews.items ?? [],\n loading: loading && !data,\n error: error ? error.message : null,\n refetch,\n };\n}\n\nexport interface SprintOption {\n id: string;\n name: string;\n status: string;\n}\n\nconst PROJECT_SPRINT_OPTIONS = gql`\n query BoardViewProjectSprints($workspaceId: ID!, $projectId: String) {\n planmagnetSprints(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 100 }\n ) {\n items {\n id\n name\n status\n }\n }\n }\n`;\n\n/** A project's sprints, for the sprint filter and for naming SPRINT swimlanes. */\nexport function useProjectSprintOptions(\n workspaceId: string | undefined,\n projectId: string | null | undefined\n) {\n const { data, loading, error } = useQuery<{\n planmagnetSprints?: { items: SprintOption[] };\n }>(PROJECT_SPRINT_OPTIONS, {\n variables: { workspaceId: workspaceId ?? '', projectId },\n skip: !workspaceId || !projectId,\n });\n return {\n options: data?.planmagnetSprints?.items ?? [],\n loading: loading && !data,\n error: error ? error.message : null,\n };\n}\n\n/** Convenience re-export so `BoardViewBar` does not need a second import of the provider hook. */\nexport { usePlanMagnet };\n"],"mappings":";;;;AAwCA,IAAa,IAAkB;CAAC;CAAO;CAAQ;CAAS;CAAY;CAAO,EAE9D,IAA0E;CACrF;EAAE,OAAO;EAAQ,OAAO;EAAQ;CAChC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAQ,OAAO;EAAQ;CAChC;EAAE,OAAO;EAAQ,OAAO;EAAQ;CAChC;EAAE,OAAO;EAAU,OAAO;EAAU;CACpC;EAAE,OAAO;EAAa,OAAO;EAAa;CAC3C,EAEY,IAA8E;CACzF;EAAE,OAAO;EAAQ,OAAO;EAAe;CACvC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAgB,OAAO;EAAgB;CAChD;EAAE,OAAO;EAAc,OAAO;EAAW;CACzC;EAAE,OAAO;EAAc,OAAO;EAAW;CAC1C,EAEY,IAAiF;CAC5F;EAAE,OAAO;EAAO,OAAO;EAAO;CAC9B;EAAE,OAAO;EAAQ,OAAO;EAAQ;CAChC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAgB,OAAO;EAAgB;CAChD;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAU,OAAO;EAAU;CACpC;EAAE,OAAO;EAAU,OAAO;EAAU;CACpC;EAAE,OAAO;EAAa,OAAO;EAAa;CAC1C;EAAE,OAAO;EAAQ,OAAO;EAAQ;CACjC,EAGY,IAA2C;CAAC;CAAO;CAAY;CAAe;AAmC3F,SAAgB,IAAgC;AAC9C,QAAO;EACL,aAAa,EAAE;EACf,YAAY;EACZ,OAAO,EAAE;EACT,YAAY,EAAE;EACd,QAAQ,EAAE;EACV,QAAQ;EACR,UAAU;EACV,aAAa;EACb,SAAS;EACT,OAAO;EACR;;AAGH,SAAgB,IAA8B;AAC5C,QAAO;EAAE,OAAO;EAAQ,WAAW;EAAO;;AAI5C,SAAgB,IAAsC;AACpD,QAAO;EAAE,QAAQ,GAAa;EAAE,MAAM,GAAa;EAAE,SAAS;EAAQ,eAAe,EAAE;EAAE;;AAI3F,SAAgB,EACd,GACqC;CACrC,IAAM,IAAiC,EAAE;AAWzC,QAVI,EAAO,YAAY,SAAS,MAAG,EAAM,cAAc,EAAO,cAC1D,EAAO,eAAY,EAAM,aAAa,KACtC,EAAO,MAAM,SAAS,MAAG,EAAM,QAAQ,EAAO,QAC9C,EAAO,WAAW,SAAS,MAAG,EAAM,aAAa,EAAO,aACxD,EAAO,OAAO,SAAS,MAAG,EAAM,SAAS,EAAO,SAChD,EAAO,OAAO,MAAM,KAAE,EAAM,SAAS,EAAO,OAAO,MAAM,GACzD,EAAO,aAAU,EAAM,WAAW,EAAO,WACzC,EAAO,gBAAa,EAAM,cAAc,EAAO,cAC/C,EAAO,YAAS,EAAM,UAAU,GAAG,EAAO,QAAQ,kBAClD,EAAO,UAAO,EAAM,QAAQ,GAAG,EAAO,MAAM,kBACzC,OAAO,KAAK,EAAM,CAAC,SAAS,IAAI,IAAQ,KAAA;;AAIjD,SAAgB,EAAe,GAAmC;AAChE,QAAO,EAAqB,EAAO,KAAK,KAAA;;AAI1C,SAAgB,EAAc,GAK5B;AACA,QAAO;EACL,QAAQ,EAAqB,EAAO,OAAO,IAAI;EAC/C,SAAS,EAAO;EAChB,MAAM;GAAE,OAAO,EAAO,KAAK;GAAO,WAAW,EAAO,KAAK;GAAW;EACpE,eAAe,EAAO;EACvB;;AAkCH,SAAgB,EAAe,GAAuC;AACpE,QAAO;EACL,QAAQ;GACN,aAAa,EAAK,OAAO;GACzB,YAAY,EAAK,OAAO;GACxB,OAAO,EAAK,OAAO;GACnB,YAAY,EAAK,OAAO;GACxB,QAAQ,EAAK,OAAO;GACpB,QAAQ,EAAK,OAAO,UAAU;GAC9B,UAAU,EAAK,OAAO,YAAY;GAClC,aAAa,EAAK,OAAO,eAAe;GACxC,SAAS,EAAK,OAAO,UAAU,EAAK,OAAO,QAAQ,MAAM,GAAG,GAAG,GAAG;GAClE,OAAO,EAAK,OAAO,QAAQ,EAAK,OAAO,MAAM,MAAM,GAAG,GAAG,GAAG;GAC7D;EACD,MAAM;GAAE,OAAO,EAAK,KAAK;GAAO,WAAW,EAAK,KAAK;GAAW;EAChE,SAAS,EAAK;EACd,eAAe,EAAK;EACrB;;AAGH,IAAM,KAAQ,MAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAS;AAGnE,SAAgB,EAAa,GAAyB,GAAkC;AACtF,QACE,EAAK,EAAE,OAAO,YAAY,KAAK,EAAK,EAAE,OAAO,YAAY,IACzD,EAAE,OAAO,eAAe,EAAE,OAAO,cACjC,EAAK,EAAE,OAAO,MAAM,KAAK,EAAK,EAAE,OAAO,MAAM,IAC7C,EAAK,EAAE,OAAO,WAAW,KAAK,EAAK,EAAE,OAAO,WAAW,IACvD,EAAK,EAAE,OAAO,OAAO,KAAK,EAAK,EAAE,OAAO,OAAO,IAC/C,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,OAAO,OAAO,MAAM,IACjD,EAAE,OAAO,aAAa,EAAE,OAAO,YAC/B,EAAE,OAAO,gBAAgB,EAAE,OAAO,eAClC,EAAE,OAAO,YAAY,EAAE,OAAO,WAC9B,EAAE,OAAO,UAAU,EAAE,OAAO,SAC5B,EAAE,KAAK,UAAU,EAAE,KAAK,SACxB,EAAE,KAAK,cAAc,EAAE,KAAK,aAC5B,EAAE,YAAY,EAAE,WAChB,EAAK,EAAE,cAAc,KAAK,EAAK,EAAE,cAAc;;AAMnD,SAAgB,IAAmC;AAEjD,QADI,OAAO,SAAW,MAAoB,OACnC,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAAC,IAAI,OAAO,IAAI;;AAIpE,SAAgB,EAAiB,GAA6B;AAC5D,KAAI,OAAO,SAAW,IAAa;CACnC,IAAM,IAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AAGzC,CAFI,IAAQ,EAAI,aAAa,IAAI,QAAQ,EAAO,GAC3C,EAAI,aAAa,OAAO,OAAO,EACpC,OAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,EAAI;;AAK5D,IAAM,IAAoB,2XAoCb,IAAc,CAAG;;;;UAIpB,EAAkB;;;;;GAOf,IAAoB,CAAG;;;QAG5B,EAAkB;;;GAKb,IAAoB,CAAG;;;QAG5B,EAAkB;;;GAKb,IAAoB,CAAG;;;;GAQvB,IAAe,CAAC,oBAAoB;AAEjD,SAAgB,EAAc,GAAiC,GAAmB;CAChF,IAAM,EAAE,SAAM,YAAS,UAAO,eAAY,EAEvC,GAAa;EACd,WAAW;GACT,aAAa,KAAe;GAC5B,QAAQ,EAAE,cAAW;GACrB,YAAY,EAAE,OAAO,KAAK;GAC3B;EACD,MAAM,CAAC;EACR,CAAC;AACF,QAAO;EACL,OAAO,GAAM,qBAAqB,SAAS,EAAE;EAC7C,SAAS,KAAW,CAAC;EACrB,OAAO,IAAQ,EAAM,UAAU;EAC/B;EACD;;AASH,IAAM,IAAyB,CAAG;;;;;;;;;;;;;;;AAiBlC,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,SAAM,YAAS,aAAU,EAE9B,GAAwB;EACzB,WAAW;GAAE,aAAa,KAAe;GAAI;GAAW;EACxD,MAAM,CAAC,KAAe,CAAC;EACxB,CAAC;AACF,QAAO;EACL,SAAS,GAAM,mBAAmB,SAAS,EAAE;EAC7C,SAAS,KAAW,CAAC;EACrB,OAAO,IAAQ,EAAM,UAAU;EAChC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BudgetControls.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/budgets/BudgetControls.tsx"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AAEH,eAAO,MAAM,eAAe,gEAAiE,CAAC;AA+D9F,8GAA8G;AAC9G,wBAAgB,kBAAkB,CAAC,EACjC,eAAe,EACf,SAAS,EACT,WAAkB,GACnB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAChC,2CA6LA;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,2CAyFvE"}