Skip to content

CharlieBytesX/centinel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Centinel

State manager for react using observer pattern and a custom hook.

NPM

https://www.npmjs.com/package/centinel

Features

  • Less than 1Kb minified
  • Simple
  • Fast Dev Experience
  • Dev full controll

Installation

Install centinel with npm, bun...

  npm install centinel

Usage/Examples

First define your variables inside a ts file

Define your state in any way you want

You can use composable objects

import { Observable } from "centinel";

export const newExam = {
  name: new Observable<string>(""),
  description: new Observable<string>(""),
  selectedSubjectName: new Observable<string>(""),
  selectedTeacherIDS: new Observable<string[]>([]),
  questions: new Observable<Question[]>([]),
};

Or with just simple variables Or Both Or ANYTHING YOU WANT

import { Observable } from "centinel";

export subjects = new Observable<Subject[]>([])
export isQuestionDirty = new Observable<boolean>(false)

Use the custom hook to grab the state

import { useObserver } from "centinel";

export default function NewTestInteractive() {
  const questions = useObserver(newExam.questions);
  const isAddingQuestion = useObserver(isAddingQuestionObs);

  return (
          {isAddingQuestion && (
          <TempQuestion questionNumbr={questions.length + 1} />
    )}
  );
}

Update the state calling the set method

You can update from another TS File or from any component

From a ts file with your logic:

import { newExam } from "./new_exams";

export function addNewQuestion() {
  const newQuestions = newExam.questions.getCopy();
  newQuestions.push(emptyQuestion());
  newExam.questions.set(newQuestions);
  isAddingQuestionObs.set(false);
}

export function handleStartAddingNewAnswer() {
  isAddingAnswerToQuestionObs.set(true);
}

From a react component:

import {
  newExam,
} from "./new_exams";

<Input
    value={name}
    onChange={(e) => newExam.name.set(e.target.value)}
    required={true}
    placeholder="Add Name"/>

Authors

About

State manager for react using observer pattern and a custom hook. Less thank 1 Kb

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy