2022-09-27 15:36:25 +02:00
/ *
THIS IS A GENERATED / BUNDLED FILE BY ESBUILD
if you want to view the source , please visit the github repository of this plugin
* /
var _ _create = Object . create ;
var _ _defProp = Object . defineProperty ;
var _ _getOwnPropDesc = Object . getOwnPropertyDescriptor ;
var _ _getOwnPropNames = Object . getOwnPropertyNames ;
var _ _getProtoOf = Object . getPrototypeOf ;
var _ _hasOwnProp = Object . prototype . hasOwnProperty ;
var _ _markAsModule = ( target ) => _ _defProp ( target , "__esModule" , { value : true } ) ;
var _ _export = ( target , all ) => {
_ _markAsModule ( target ) ;
for ( var name in all )
_ _defProp ( target , name , { get : all [ name ] , enumerable : true } ) ;
} ;
var _ _reExport = ( target , module2 , desc ) => {
if ( module2 && typeof module2 === "object" || typeof module2 === "function" ) {
for ( let key of _ _getOwnPropNames ( module2 ) )
if ( ! _ _hasOwnProp . call ( target , key ) && key !== "default" )
_ _defProp ( target , key , { get : ( ) => module2 [ key ] , enumerable : ! ( desc = _ _getOwnPropDesc ( module2 , key ) ) || desc . enumerable } ) ;
}
return target ;
} ;
var _ _toModule = ( module2 ) => {
return _ _reExport ( _ _markAsModule ( _ _defProp ( module2 != null ? _ _create ( _ _getProtoOf ( module2 ) ) : { } , "default" , module2 && module2 . _ _esModule && "default" in module2 ? { get : ( ) => module2 . default , enumerable : true } : { value : module2 , enumerable : true } ) ) , module2 ) ;
} ;
var _ _async = ( _ _this , _ _arguments , generator ) => {
return new Promise ( ( resolve , reject ) => {
var fulfilled = ( value ) => {
try {
step ( generator . next ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var rejected = ( value ) => {
try {
step ( generator . throw ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var step = ( x ) => x . done ? resolve ( x . value ) : Promise . resolve ( x . value ) . then ( fulfilled , rejected ) ;
step ( ( generator = generator . apply ( _ _this , _ _arguments ) ) . next ( ) ) ;
} ) ;
} ;
// src/main.ts
_ _export ( exports , {
default : ( ) => SimpleTimeTrackerPlugin
} ) ;
var import _obsidian2 = _ _toModule ( require ( "obsidian" ) ) ;
// src/settings.ts
var defaultSettings = { } ;
// src/settings-tab.ts
var import _obsidian = _ _toModule ( require ( "obsidian" ) ) ;
var SimpleTimeTrackerSettingsTab = class extends import _obsidian . PluginSettingTab {
constructor ( app , plugin ) {
super ( app , plugin ) ;
this . plugin = plugin ;
}
display ( ) {
this . containerEl . empty ( ) ;
this . containerEl . createEl ( "h2" , { text : "Simple Time Tracker Settings" } ) ;
this . containerEl . createEl ( "hr" ) ;
this . containerEl . createEl ( "p" , { text : "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" } ) ;
this . containerEl . createEl ( "a" , { href : "https://ellpeck.de/support" } ) . createEl ( "img" , { attr : { src : "https://ellpeck.de/res/generalsupport.png" } , cls : "simple-time-tracker-support" } ) ;
}
} ;
2022-09-27 16:06:40 +02:00
// src/tracker.ts
2022-09-27 17:03:44 +02:00
function startEntry ( tracker , name ) {
let entry = { name , startTime : Date . now ( ) , endTime : null } ;
tracker . entries . push ( entry ) ;
}
function endEntry ( tracker ) {
let last = tracker . entries . last ( ) ;
last . endTime = Date . now ( ) ;
}
function isRunning ( tracker ) {
let last = tracker . entries . last ( ) ;
return last != null && ! last . endTime ;
}
function saveTracker ( tracker , app , section ) {
return _ _async ( this , null , function * ( ) {
let file = app . workspace . getActiveFile ( ) ;
let content = yield app . vault . cachedRead ( file ) ;
let lines = content . split ( "\n" ) ;
let prev = lines . filter ( ( _ , i ) => i <= section . lineStart ) . join ( "\n" ) ;
let next = lines . filter ( ( _ , i ) => i >= section . lineEnd ) . join ( "\n" ) ;
content = ` ${ prev }
$ { JSON . stringify ( tracker ) }
$ { next } ` ;
yield app . vault . modify ( file , content ) ;
} ) ;
}
function loadTracker ( json ) {
if ( json ) {
try {
return JSON . parse ( json ) ;
} catch ( e ) {
console . log ( ` Failed to parse Tracker from ${ json } ` ) ;
2022-09-27 16:06:40 +02:00
}
}
2022-09-27 17:03:44 +02:00
return { entries : [ ] } ;
}
function displayTracker ( tracker , element ) {
let list = element . createEl ( "ul" ) ;
for ( let entry of tracker . entries )
list . createEl ( "li" , { text : displayEntry ( entry ) } ) ;
}
function displayEntry ( entry ) {
let ret = "" ;
if ( entry . name )
ret += ` ${ entry . name } : ` ;
let start = new Date ( entry . startTime ) ;
ret += ` ${ start . toLocaleString ( ) } - ` ;
if ( entry . endTime ) {
let end = new Date ( entry . endTime ) ;
ret += ` ${ end . toLocaleString ( ) } ` ;
2022-09-27 16:06:40 +02:00
}
2022-09-27 17:03:44 +02:00
return ret ;
}
2022-09-27 16:06:40 +02:00
2022-09-27 15:36:25 +02:00
// src/main.ts
var SimpleTimeTrackerPlugin = class extends import _obsidian2 . Plugin {
onload ( ) {
return _ _async ( this , null , function * ( ) {
yield this . loadSettings ( ) ;
this . addSettingTab ( new SimpleTimeTrackerSettingsTab ( this . app , this ) ) ;
2022-09-27 16:06:40 +02:00
this . registerMarkdownCodeBlockProcessor ( "simple-time-tracker" , ( s , e , i ) => {
2022-09-27 15:36:25 +02:00
e . empty ( ) ;
e . addClass ( "simple-time-tracker" ) ;
2022-09-27 17:03:44 +02:00
let tracker = loadTracker ( s ) ;
2022-09-27 16:06:40 +02:00
let name = new import _obsidian2 . TextComponent ( e ) . setPlaceholder ( "Name this segment" ) ;
2022-09-27 17:03:44 +02:00
new import _obsidian2 . ButtonComponent ( e ) . setButtonText ( "Start" ) . onClick ( ( ) => _ _async ( this , null , function * ( ) {
if ( isRunning ( tracker ) ) {
endEntry ( tracker ) ;
} else {
startEntry ( tracker , name . getValue ( ) ) ;
}
name . setValue ( "" ) ;
yield saveTracker ( tracker , this . app , i . getSectionInfo ( e ) ) ;
} ) ) ;
displayTracker ( tracker , e ) ;
2022-09-27 15:36:25 +02:00
} ) ;
} ) ;
}
loadSettings ( ) {
return _ _async ( this , null , function * ( ) {
this . settings = Object . assign ( { } , defaultSettings , yield this . loadData ( ) ) ;
} ) ;
}
saveSettings ( ) {
return _ _async ( this , null , function * ( ) {
yield this . saveData ( this . settings ) ;
} ) ;
}
} ;
2022-09-27 17:03:44 +02:00
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL3NldHRpbmdzLnRzIiwgInNyYy9zZXR0aW5ncy10YWIudHMiLCAic3JjL3RyYWNrZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCwgUGx1Z2luLCBUZXh0Q29tcG9uZW50IH0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRTZXR0aW5ncywgU2ltcGxlVGltZVRyYWNrZXJTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XHJcbmltcG9ydCB7IFNpbXBsZVRpbWVUcmFja2VyU2V0dGluZ3NUYWIgfSBmcm9tIFwiLi9zZXR0aW5ncy10YWJcIjtcclxuaW1wb3J0IHsgZGlzcGxheVRyYWNrZXIsIGVuZEVudHJ5LCBpc1J1bm5pbmcsIGxvYWRUcmFja2VyLCBzYXZlVHJhY2tlciwgc3RhcnRFbnRyeSwgVHJhY2tlciB9IGZyb20gXCIuL3RyYWNrZXJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpbXBsZVRpbWVUcmFja2VyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcclxuXHJcblx0c2V0dGluZ3M6IFNpbXBsZVRpbWVUcmFja2VyU2V0dGluZ3M7XHJcblxyXG5cdGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XHJcblxyXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBTaW1wbGVUaW1lVHJhY2tlclNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSk7XHJcblxyXG5cdFx0dGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKFwic2ltcGxlLXRpbWUtdHJhY2tlclwiLCAocywgZSwgaSkgPT4ge1xyXG5cdFx0XHRlLmVtcHR5KCk7XHJcblx0XHRcdGUuYWRkQ2xhc3MoXCJzaW1wbGUtdGltZS10cmFja2VyXCIpO1xyXG5cclxuXHRcdFx0bGV0IHRyYWNrZXIgPSBsb2FkVHJhY2tlcihzKTtcclxuXHJcblx0XHRcdGxldCBuYW1lID0gbmV3IFRleHRDb21wb25lbnQoZSlcclxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoXCJOYW1lIHRoaXMgc2VnbWVudFwiKTtcclxuXHRcdFx0bmV3IEJ1dHRvbkNvbXBvbmVudChlKVxyXG5cdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiU3RhcnRcIilcclxuXHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoaXNSdW5uaW5nKHRyYWNrZXIpKSB7XHJcblx0XHRcdFx0XHRcdGVuZEVudHJ5KHRyYWNrZXIpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0c3RhcnRFbnRyeSh0cmFja2VyLCBuYW1lLmdldFZhbHVlKCkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bmFtZS5zZXRWYWx1ZShcIlwiKTtcclxuXHRcdFx0XHRcdGF3YWl0IHNhdmVUcmFja2VyKHRyYWNrZXIsIHRoaXMuYXBwLCBpLmdldFNlY3Rpb25JbmZvKGUpKTtcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdGRpc3BsYXlUcmFja2VyKHRyYWNrZXIsIGUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNldHRpbmdzLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuXHR9XHJcbn1cclxuIiwgImV4cG9ydCBjb25zdCBkZWZhdWx0U2V0dGluZ3M6IFNpbXBsZVRpbWVUcmFja2VyU2V0dGluZ3MgPSB7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVUaW1lVHJhY2tlclNldHRpbmdzIHtcclxuXHJcbn1cclxuIiwgImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5pbXBvcnQgU2ltcGxlVGltZVRyYWNrZXJQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNpbXBsZVRpbWVUcmFja2VyU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcbiAgICBwbHVnaW46IFNpbXBsZVRpbWVUcmFja2VyUGx1Z2luO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFNpbXBsZVRpbWVUcmFja2VyUGx1Z2luKSB7XHJcbiAgICAgICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXkoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiU2ltcGxlIFRpbWUgVHJhY2tlciBTZXR0aW5nc1wiIH0pO1xyXG5cclxuICAgICAgICAvLyBUT0RPIHNldHRpbmdzIGdvIGhlcmVcclxuXHJcbiAgICAgICAgdGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImhyXCIpO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJJZiB5b3UgbGlrZSB0aGlzIHBsdWdpbiBhbmQgd2FudCB0byBzdXBwb3J0IGl0cyBkZXZlbG9wbWVudCwgeW91IGNhbiBkbyBzbyB0aHJvdWdoIG15IHdlYnNpdGUgYnkgY2xpY2tpbmcgdGhpcyBmYW5jeSBpbWFnZSFcIiB9KTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiYVwiLCB7IGhyZWY6IFwiaHR0cHM6Ly9lbGxwZWNrLmRlL3N1cHBvcnRcIiB9KVxyXG4gICAgICAgICAgICAuY3JlYXRlRWwoXCJpbWdcIiwgeyBhdHRyOiB7IHNyYzogXCJodHRwczovL2VsbHBlY2suZGUvcmVzL2dlbmVyYWxzdXBwb3J0LnBuZ1wiIH0sIGNsczogXCJzaW1wbGUtdGltZS10cmFja2VyLXN1cHBvcnRcIiB9KTtcclxuICAgIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgQXBwLCBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgVHJhY2tlciB7XG4gICAgZW50cmllczogRW50cnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRyeSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgI